|
1 |
| -#Полезные шаблоны конфигов для Nginx |
| 1 | +# Полезные шаблоны конфигов для Nginx |
2 | 2 |
|
3 | 3 | Переведо и дополнено на основе репозитория [nginx-conf](https://github.com/lebinh/nginx-conf) от [@lebinh](https://github.com/lebinh)
|
4 | 4 |
|
|
30 | 30 | - [Источники](#Источники)
|
31 | 31 |
|
32 | 32 |
|
33 |
| -##Команды Nginx |
| 33 | +## Команды Nginx |
| 34 | + |
34 | 35 | Основные команды для выполнения базовый операций во время работы Nginx.
|
35 | 36 |
|
36 | 37 | * `nginx -V` - проверить версию Nginx, его скомпилированные параметры конфигурации и установленные модули.
|
37 | 38 | * `nginx -t` - протестировать конфигурационный файл и проверить его расположение.
|
38 | 39 | * `nginx -s reload` - перезапустить конфигурационный файл без перезагрузки Nginx.
|
39 | 40 |
|
40 |
| -##Location блок на PHP |
| 41 | +## Location блок на PHP |
| 42 | + |
41 | 43 | Простой шаблон для быстрой и легкой установки PHP, FPM или CGI на ваш сайт.
|
42 | 44 |
|
43 | 45 | location ~ \.php$ {
|
|
49 | 51 | fastcgi_pass unix:/path/to/php.sock;
|
50 | 52 | }
|
51 | 53 |
|
52 |
| -##Rewrite и Redirection |
| 54 | +## Rewrite и Redirection |
| 55 | + |
53 | 56 | ### Force www
|
| 57 | + |
54 | 58 | [Корректный способ](http://nginx.org/en/docs/http/converting_rewrite_rules.html) определить удаленный сервер по домену без *www* и перенаправить его c *www*:
|
55 | 59 |
|
56 | 60 | server {
|
|
65 | 69 | ...
|
66 | 70 | }
|
67 | 71 |
|
68 |
| -*Также работает для HTTPS * |
| 72 | +*Также работает для HTTPS* |
| 73 | + |
| 74 | +### Force no-www |
69 | 75 |
|
70 |
| -###Force no-www |
71 | 76 | Корректный способ определить удаленный сервер по домену c *www* и перенаправить его без *www*:
|
72 | 77 |
|
73 | 78 | server {
|
|
82 | 87 | }
|
83 | 88 |
|
84 | 89 | ### Force HTTPS
|
| 90 | + |
85 | 91 | Способ для переадресации с HTTP на HTTPS:
|
86 | 92 |
|
87 | 93 | server {
|
|
98 | 104 | ...
|
99 | 105 | }
|
100 | 106 |
|
101 |
| -###Force Trailing Slash |
| 107 | +### Force Trailing Slash |
| 108 | + |
102 | 109 | Данная строка добавляет слэш `/` в конце каждого URL, только в том случаее если в URL нет точки или параметров. Тоесть после *example.com/index.php* или *example.com/do?some=123* слэш не поставится.
|
103 | 110 |
|
104 | 111 | rewrite ^([^.\?]*[^/])$ $1/ permanent;
|
|
124 | 131 | }
|
125 | 132 |
|
126 | 133 |
|
127 |
| -##Производительность |
| 134 | +## Производительность |
| 135 | + |
| 136 | +### Кэширование |
128 | 137 |
|
129 |
| -###Кэширование |
130 | 138 | Навсегда разрешить браузерам кэшировать статические содержимое. Nginx установит оба заголовка: Expires и Cache-Control.
|
131 | 139 |
|
132 | 140 | location /static {
|
|
141 | 149 | expires -1;
|
142 | 150 | }
|
143 | 151 |
|
144 |
| -###Gzip сжатие |
| 152 | +### Gzip сжатие |
145 | 153 | gzip on;
|
146 | 154 | gzip_buffers 16 8k;
|
147 | 155 | gzip_comp_level 6;
|
|
189 | 197 | }
|
190 | 198 | }
|
191 | 199 |
|
192 |
| -###Мониторинг |
| 200 | +### Мониторинг |
193 | 201 | По умолчанию [Stub Status](http://nginx.org/ru/docs/http/ngx_http_stub_status_module.html) модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_stub_status_module и активировать с помощью:
|
194 | 202 |
|
195 | 203 | location /status {
|
|
212 | 220 |
|
213 | 221 | Также для сбора статистики отлично подходит [ngxtop](https://github.com/lebinh/ngxtop).
|
214 | 222 |
|
215 |
| -##Безопасность |
216 |
| -###Активация базовой аунтификации |
| 223 | +## Безопасность |
| 224 | +### Активация базовой аунтификации |
217 | 225 | Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле:
|
218 | 226 |
|
219 | 227 | имя:пароль
|
|
224 | 232 | auth_basic "This is Protected";
|
225 | 233 | auth_basic_user_file /path/to/password-file;
|
226 | 234 |
|
227 |
| -###Открыть только локальный доступ |
| 235 | +### Открыть только локальный доступ |
228 | 236 | location /local {
|
229 | 237 | allow 127.0.0.1;
|
230 | 238 | deny all;
|
231 | 239 | ...
|
232 | 240 | }
|
233 |
| -###Защита SSL настроек |
| 241 | +### Защита SSL настроек |
234 | 242 | * Отключить SSLv3, если он включен по умолчанию. Это предотвратит [POODLE SSL Attack](http://nginx.com/blog/nginx-poodle-ssl/).
|
235 | 243 | * Шифры, которые наилучшим образом обеспечат защиту. [Mozilla Server Side TLS and Nginx](https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx).
|
236 | 244 |
|
|
241 | 249 | ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
|
242 | 250 | ssl_prefer_server_ciphers on;
|
243 | 251 |
|
244 |
| -##Прочее |
245 |
| -###Подзапросы после завершения |
| 252 | +## Прочее |
| 253 | +### Подзапросы после завершения |
246 | 254 | Бывают ситуации, когда вам необходимо передать запрос на другой бэкэнд **в дополнении или после его обработки**. Первый случай - отслеживать количество завершенных загрузок путем вызова API, после того как пользователь скачал файл. Второй случай -отслеживать запрос, к которому вы бы хотели вернуться как можно быстрее (возможно с пустым .gif) и сделать соответствующие записи в фоновом режиме. [**post_action**](http://wiki.nginx.org/HttpCoreModule#post_action), который позволяет вам определить подзапрос и будет отклонен по окончанию текущего запроса - является [лучшим решением](http://mailman.nginx.org/pipermail/nginx/2008-April/004524.html) для обоих вариантов.
|
247 | 255 |
|
248 | 256 | location = /empty.gif {
|
|
256 | 264 | proxy_pass http://tracking-backend;
|
257 | 265 | }
|
258 | 266 |
|
259 |
| -###Распределение ресурсов между источниками |
| 267 | +### Распределение ресурсов между источниками |
260 | 268 |
|
261 | 269 | Самый простой и наиболее известный способ кросс-доменного запроса на ваш сервер:
|
262 | 270 |
|
|
0 commit comments