From 73f35ad5f47a1a10d240fff212978697bcc5ee4e Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 16 Feb 2016 11:32:03 +0700 Subject: [PATCH 1/6] Fixed syntax highlighter --- README.md | 76 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 1e1f439..2858296 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ ##Location блок на PHP Простой шаблон для быстрой и легкой установки PHP, FPM или CGI на ваш сайт. - +``` location ~ \.php$ { try_files $uri =404; client_max_body_size 64m; @@ -48,11 +48,11 @@ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/path/to/php.sock; } - +``` ##Rewrite и Redirection ### Force www [Корректный способ](http://nginx.org/en/docs/http/converting_rewrite_rules.html) определить удаленный сервер по домену без *www* и перенаправить его c *www*: - +``` server { listen 80; server_name example.org; @@ -64,12 +64,12 @@ server_name www.example.org; ... } - +``` *Также работает для HTTPS * ###Force no-www Корректный способ определить удаленный сервер по домену c *www* и перенаправить его без *www*: - +``` server { listen 80; server_name example.org; @@ -80,10 +80,10 @@ server_name www.example.org; return 301 $scheme://example.org$request_uri; } - +``` ### Force HTTPS Способ для переадресации с HTTP на HTTPS: - +``` server { listen 80; return 301 https://$host$request_uri; @@ -97,51 +97,52 @@ ... } - +``` ###Force Trailing Slash Данная строка добавляет слэш `/` в конце каждого URL, только в том случаее если в URL нет точки или параметров. Тоесть после *example.com/index.php* или *example.com/do?some=123* слэш не поставится. - +``` rewrite ^([^.\?]*[^/])$ $1/ permanent; - +``` ### Редирект на страницу - +``` server { location = /oldpage.html { return 301 http://example.org/newpage.html; } } - +``` ### Редирект на сайт - +``` server { server_name old-site.com return 301 $scheme://new-site.com$request_uri; } - +``` ### Редирект на определенный путь в URI +``` location /old-site { rewrite ^/old-site/(.*) http://example.org/new-site/$1 permanent; } - - +``` ##Производительность ###Кэширование Навсегда разрешить браузерам кэшировать статические содержимое. Nginx установит оба заголовка: Expires и Cache-Control. - +``` location /static { root /data; expires max; } - +``` Запретить кэширование браузерам (например для отслеживания запросов) можно следующим образом: - +``` location = /empty.gif { empty_gif; expires -1; } - +``` ###Gzip сжатие +``` gzip on; gzip_buffers 16 8k; gzip_comp_level 6; @@ -157,24 +158,24 @@ font/opentype application/x-font-ttf application/vnd.ms-fontobject image/x-icon; gzip_disable "msie6"; - +``` ### Кэш файлов Если у вас кешируется большое количество статических файлов через Nginx, то кэширование метаданных этих файлов позволит сэкономить время задержки. - +``` open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; - +``` ### SSL кэш Подключение SSL кэширования позволит возобновлять SSL сессии и сократить время к следующим обращениям к SSL/TLS протоколу. - +``` ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; - +``` ### Поддержка Upstream Активация кеширования c использованием Upstream подключений: - +``` upstream backend { server 127.0.0.1:8080; keepalive 32; @@ -188,15 +189,15 @@ proxy_set_header Connection ""; } } - +``` ###Мониторинг По умолчанию [Stub Status](http://nginx.org/ru/docs/http/ngx_http_stub_status_module.html) модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_stub_status_module и активировать с помощью: - +``` location /status { stub_status on; access_log off; } - +``` Данная настройка позволит вам получать статус в обычном текстовом формате по общему количеству запросов и клиентским подключениям (принятым, обработанным, активным). Более информативный статус от Nginx можно получить с помощью [Luameter](https://luameter.com/), который несколько сложнее в установке и требует наличия Nginx Lua модуля. Это предоставит следующие метрики по различным конфигурационным группам в формате JSON: @@ -215,21 +216,23 @@ ##Безопасность ###Активация базовой аунтификации Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле: - +``` имя:пароль - +``` Затем установить найтройки для server/location блока, который необходимо защитить: - +``` auth_basic "This is Protected"; auth_basic_user_file /path/to/password-file; - +``` ###Открыть только локальный доступ +``` location /local { allow 127.0.0.1; deny all; ... } +``` ###Защита SSL настроек * Отключить SSLv3, если он включен по умолчанию. Это предотвратит [POODLE SSL Attack](http://nginx.com/blog/nginx-poodle-ssl/). * Шифры, которые наилучшим образом обеспечат защиту. [Mozilla Server Side TLS and Nginx](https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx). @@ -244,7 +247,7 @@ ##Прочее ###Подзапросы после завершения Бывают ситуации, когда вам необходимо передать запрос на другой бэкэнд **в дополнении или после его обработки**. Первый случай - отслеживать количество завершенных загрузок путем вызова API, после того как пользователь скачал файл. Второй случай -отслеживать запрос, к которому вы бы хотели вернуться как можно быстрее (возможно с пустым .gif) и сделать соответствующие записи в фоновом режиме. [**post_action**](http://wiki.nginx.org/HttpCoreModule#post_action), который позволяет вам определить подзапрос и будет отклонен по окончанию текущего запроса - является [лучшим решением](http://mailman.nginx.org/pipermail/nginx/2008-April/004524.html) для обоих вариантов. - +``` location = /empty.gif { empty_gif; expires -1; @@ -255,14 +258,15 @@ internal; proxy_pass http://tracking-backend; } - +``` ###Распределение ресурсов между источниками Самый простой и наиболее известный способ кросс-доменного запроса на ваш сервер: - +``` location ~* \.(eot|ttf|woff) { add_header Access-Control-Allow-Origin *; } +``` ## Источники - [Nginx Official Guide](http://nginx.com/resources/admin-guide/) From 7685636bd2429c155ddf02e1a5f84918a179d18e Mon Sep 17 00:00:00 2001 From: "Elasticweb.org" Date: Sat, 27 Feb 2016 18:34:36 +0200 Subject: [PATCH 2/6] Update README.md --- README.md | 224 +++++++++++++++++++++++++++--------------------------- 1 file changed, 112 insertions(+), 112 deletions(-) diff --git a/README.md b/README.md index 2858296..0dcdd0b 100644 --- a/README.md +++ b/README.md @@ -40,163 +40,163 @@ ##Location блок на PHP Простой шаблон для быстрой и легкой установки PHP, FPM или CGI на ваш сайт. ``` - location ~ \.php$ { - try_files $uri =404; - client_max_body_size 64m; - client_body_buffer_size 128k; - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_pass unix:/path/to/php.sock; - } +location ~ \.php$ { + try_files $uri =404; + client_max_body_size 64m; + client_body_buffer_size 128k; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_pass unix:/path/to/php.sock; +} ``` ##Rewrite и Redirection ### Force www [Корректный способ](http://nginx.org/en/docs/http/converting_rewrite_rules.html) определить удаленный сервер по домену без *www* и перенаправить его c *www*: ``` - server { - listen 80; - server_name example.org; - return 301 $scheme://www.example.org$request_uri; - } +server { + listen 80; + server_name example.org; + return 301 $scheme://www.example.org$request_uri; +} - server { - listen 80; - server_name www.example.org; - ... - } +server { + listen 80; + server_name www.example.org; + ... +} ``` *Также работает для HTTPS * ###Force no-www Корректный способ определить удаленный сервер по домену c *www* и перенаправить его без *www*: ``` - server { - listen 80; - server_name example.org; - } +server { + listen 80; + server_name example.org; +} - server { - listen 80; - server_name www.example.org; - return 301 $scheme://example.org$request_uri; - } +server { + listen 80; + server_name www.example.org; + return 301 $scheme://example.org$request_uri; +} ``` ### Force HTTPS Способ для переадресации с HTTP на HTTPS: ``` - server { - listen 80; - return 301 https://$host$request_uri; - } +server { + listen 80; + return 301 https://$host$request_uri; +} - server { - listen 443 ssl; +server { + listen 443 ssl; - # let the browsers know that we only accept HTTPS - add_header Strict-Transport-Security max-age=2592000; + # let the browsers know that we only accept HTTPS + add_header Strict-Transport-Security max-age=2592000; - ... - } + ... +} ``` ###Force Trailing Slash Данная строка добавляет слэш `/` в конце каждого URL, только в том случаее если в URL нет точки или параметров. Тоесть после *example.com/index.php* или *example.com/do?some=123* слэш не поставится. ``` - rewrite ^([^.\?]*[^/])$ $1/ permanent; +rewrite ^([^.\?]*[^/])$ $1/ permanent; ``` ### Редирект на страницу ``` - server { - location = /oldpage.html { - return 301 http://example.org/newpage.html; - } - } +server { + location = /oldpage.html { + return 301 http://example.org/newpage.html; + } +} ``` ### Редирект на сайт ``` - server { - server_name old-site.com - return 301 $scheme://new-site.com$request_uri; - } +server { + server_name old-site.com + return 301 $scheme://new-site.com$request_uri; +} ``` ### Редирект на определенный путь в URI ``` - location /old-site { - rewrite ^/old-site/(.*) http://example.org/new-site/$1 permanent; - } +location /old-site { + rewrite ^/old-site/(.*) http://example.org/new-site/$1 permanent; +} ``` ##Производительность ###Кэширование Навсегда разрешить браузерам кэшировать статические содержимое. Nginx установит оба заголовка: Expires и Cache-Control. ``` - location /static { - root /data; - expires max; - } +location /static { + root /data; + expires max; +} ``` Запретить кэширование браузерам (например для отслеживания запросов) можно следующим образом: ``` - location = /empty.gif { - empty_gif; - expires -1; - } +location = /empty.gif { + empty_gif; + expires -1; +} ``` ###Gzip сжатие ``` - gzip on; - gzip_buffers 16 8k; - gzip_comp_level 6; - gzip_http_version 1.1; - gzip_min_length 256; - gzip_proxied any; - gzip_vary on; - gzip_types - text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml - text/javascript application/javascript application/x-javascript - text/x-json application/json application/x-web-app-manifest+json - text/css text/plain text/x-component - font/opentype application/x-font-ttf application/vnd.ms-fontobject - image/x-icon; - gzip_disable "msie6"; +gzip on; +gzip_buffers 16 8k; +gzip_comp_level 6; +gzip_http_version 1.1; +gzip_min_length 256; +gzip_proxied any; +gzip_vary on; +gzip_types +text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml +text/javascript application/javascript application/x-javascript +text/x-json application/json application/x-web-app-manifest+json +text/css text/plain text/x-component +font/opentype application/x-font-ttf application/vnd.ms-fontobject +image/x-icon; +gzip_disable "msie6"; ``` ### Кэш файлов Если у вас кешируется большое количество статических файлов через Nginx, то кэширование метаданных этих файлов позволит сэкономить время задержки. ``` - open_file_cache max=1000 inactive=20s; - open_file_cache_valid 30s; - open_file_cache_min_uses 2; - open_file_cache_errors on; +open_file_cache max=1000 inactive=20s; +open_file_cache_valid 30s; +open_file_cache_min_uses 2; +open_file_cache_errors on; ``` ### SSL кэш Подключение SSL кэширования позволит возобновлять SSL сессии и сократить время к следующим обращениям к SSL/TLS протоколу. ``` - ssl_session_cache shared:SSL:10m; - ssl_session_timeout 10m; +ssl_session_cache shared:SSL:10m; +ssl_session_timeout 10m; ``` ### Поддержка Upstream Активация кеширования c использованием Upstream подключений: ``` - upstream backend { - server 127.0.0.1:8080; - keepalive 32; - } +upstream backend { + server 127.0.0.1:8080; + keepalive 32; +} - server { - ... - location /api/ { - proxy_pass http://backend; - proxy_http_version 1.1; - proxy_set_header Connection ""; - } - } +server { + ... + location /api/ { + proxy_pass http://backend; + proxy_http_version 1.1; + proxy_set_header Connection ""; + } +} ``` ###Мониторинг По умолчанию [Stub Status](http://nginx.org/ru/docs/http/ngx_http_stub_status_module.html) модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_stub_status_module и активировать с помощью: ``` - location /status { - stub_status on; - access_log off; - } +location /status { + stub_status on; + access_log off; +} ``` Данная настройка позволит вам получать статус в обычном текстовом формате по общему количеству запросов и клиентским подключениям (принятым, обработанным, активным). @@ -217,21 +217,21 @@ ###Активация базовой аунтификации Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле: ``` - имя:пароль +имя:пароль ``` Затем установить найтройки для server/location блока, который необходимо защитить: ``` - auth_basic "This is Protected"; - auth_basic_user_file /path/to/password-file; +auth_basic "This is Protected"; +auth_basic_user_file /path/to/password-file; ``` ###Открыть только локальный доступ ``` - location /local { - allow 127.0.0.1; - deny all; - ... - } +location /local { + allow 127.0.0.1; + deny all; + ... +} ``` ###Защита SSL настроек * Отключить SSLv3, если он включен по умолчанию. Это предотвратит [POODLE SSL Attack](http://nginx.com/blog/nginx-poodle-ssl/). @@ -248,16 +248,16 @@ ###Подзапросы после завершения Бывают ситуации, когда вам необходимо передать запрос на другой бэкэнд **в дополнении или после его обработки**. Первый случай - отслеживать количество завершенных загрузок путем вызова API, после того как пользователь скачал файл. Второй случай -отслеживать запрос, к которому вы бы хотели вернуться как можно быстрее (возможно с пустым .gif) и сделать соответствующие записи в фоновом режиме. [**post_action**](http://wiki.nginx.org/HttpCoreModule#post_action), который позволяет вам определить подзапрос и будет отклонен по окончанию текущего запроса - является [лучшим решением](http://mailman.nginx.org/pipermail/nginx/2008-April/004524.html) для обоих вариантов. ``` - location = /empty.gif { - empty_gif; - expires -1; - post_action @track; - } +location = /empty.gif { + empty_gif; + expires -1; + post_action @track; +} - location @track { - internal; - proxy_pass http://tracking-backend; - } +location @track { + internal; + proxy_pass http://tracking-backend; +} ``` ###Распределение ресурсов между источниками From 58fb2a8cba93ad120c80f89cfc0851a8b05fdb4e Mon Sep 17 00:00:00 2001 From: "Elasticweb.org" Date: Sat, 27 Feb 2016 18:35:11 +0200 Subject: [PATCH 3/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0dcdd0b..dc69359 100644 --- a/README.md +++ b/README.md @@ -264,7 +264,7 @@ location @track { Самый простой и наиболее известный способ кросс-доменного запроса на ваш сервер: ``` location ~* \.(eot|ttf|woff) { - add_header Access-Control-Allow-Origin *; + add_header Access-Control-Allow-Origin *; } ``` ## Источники From 8bb35f214ed66c3987c52b4c7b6f10b8fcc624af Mon Sep 17 00:00:00 2001 From: "Elasticweb.org" Date: Sat, 27 Feb 2016 18:43:14 +0200 Subject: [PATCH 4/6] Update README.md --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index dc69359..6721fc8 100644 --- a/README.md +++ b/README.md @@ -151,13 +151,13 @@ gzip_min_length 256; gzip_proxied any; gzip_vary on; gzip_types -text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml -text/javascript application/javascript application/x-javascript -text/x-json application/json application/x-web-app-manifest+json -text/css text/plain text/x-component -font/opentype application/x-font-ttf application/vnd.ms-fontobject -image/x-icon; -gzip_disable "msie6"; + text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml + text/javascript application/javascript application/x-javascript + text/x-json application/json application/x-web-app-manifest+json + text/css text/plain text/x-component + font/opentype application/x-font-ttf application/vnd.ms-fontobject + image/x-icon; +gzip_disable "msie6"; ``` ### Кэш файлов Если у вас кешируется большое количество статических файлов через Nginx, то кэширование метаданных этих файлов позволит сэкономить время задержки. From 1cbd161d286025dcb7ef94dd2f85a9b504c01843 Mon Sep 17 00:00:00 2001 From: "Elasticweb.org" Date: Mon, 15 Aug 2016 20:55:50 +0300 Subject: [PATCH 5/6] Update README.md. --- README.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 6721fc8..cb845b3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ #Полезные шаблоны конфигов для Nginx -Переведо и дополнено на основе репозитория [nginx-conf](https://github.com/lebinh/nginx-conf) от [@lebinh](https://github.com/lebinh) +Переведено и дополнено на основе репозитория [nginx-conf](https://github.com/lebinh/nginx-conf) от [@lebinh](https://github.com/lebinh) ## Содержание - [Команды Nginx](#Команды-nginx) @@ -31,10 +31,10 @@ ##Команды Nginx -Основные команды для выполнения базовый операций во время работы Nginx. +Основные команды для выполнения базовый операций во время работы Nginx. -* `nginx -V` - проверить версию Nginx, его скомпилированные параметры конфигурации и установленные модули. -* `nginx -t` - протестировать конфигурационный файл и проверить его расположение. +* `nginx -V` - проверить версию Nginx, его скомпилированные параметры конфигурации и установленные модули. +* `nginx -t` - протестировать конфигурационный файл и проверить его расположение. * `nginx -s reload` - перезапустить конфигурационный файл без перезагрузки Nginx. ##Location блок на PHP @@ -74,7 +74,7 @@ server { listen 80; server_name example.org; } - + server { listen 80; server_name www.example.org; @@ -88,13 +88,13 @@ server { listen 80; return 301 https://$host$request_uri; } - + server { listen 443 ssl; - + # let the browsers know that we only accept HTTPS add_header Strict-Transport-Security max-age=2592000; - + ... } ``` @@ -134,7 +134,7 @@ location /static { expires max; } ``` -Запретить кэширование браузерам (например для отслеживания запросов) можно следующим образом: +Запретить кэширование браузерам (например для отслеживания запросов) можно следующим образом: ``` location = /empty.gif { empty_gif; @@ -160,7 +160,7 @@ gzip_types gzip_disable "msie6"; ``` ### Кэш файлов -Если у вас кешируется большое количество статических файлов через Nginx, то кэширование метаданных этих файлов позволит сэкономить время задержки. +Если у вас кешируется большое количество статических файлов через Nginx, то кэширование метаданных этих файлов позволит сэкономить время задержки. ``` open_file_cache max=1000 inactive=20s; open_file_cache_valid 30s; @@ -171,16 +171,16 @@ open_file_cache_errors on; Подключение SSL кэширования позволит возобновлять SSL сессии и сократить время к следующим обращениям к SSL/TLS протоколу. ``` ssl_session_cache shared:SSL:10m; -ssl_session_timeout 10m; +ssl_session_timeout 10m; ``` ### Поддержка Upstream -Активация кеширования c использованием Upstream подключений: +Активация кеширования c использованием Upstream подключений: ``` upstream backend { server 127.0.0.1:8080; keepalive 32; } - + server { ... location /api/ { @@ -191,7 +191,7 @@ server { } ``` ###Мониторинг -По умолчанию [Stub Status](http://nginx.org/ru/docs/http/ngx_http_stub_status_module.html) модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_stub_status_module и активировать с помощью: +По умолчанию [Stub Status](http://nginx.org/ru/docs/http/ngx_http_stub_status_module.html) модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_stub_status_module и активировать с помощью: ``` location /status { stub_status on; @@ -215,12 +215,12 @@ location /status { ##Безопасность ###Активация базовой аунтификации -Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле: +Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле: ``` имя:пароль ``` -Затем установить найтройки для server/location блока, который необходимо защитить: +Затем установить найтройки для server/location блока, который необходимо защитить: ``` auth_basic "This is Protected"; auth_basic_user_file /path/to/password-file; @@ -232,14 +232,14 @@ location /local { deny all; ... } -``` -###Защита SSL настроек +``` +###Защита SSL настроек * Отключить SSLv3, если он включен по умолчанию. Это предотвратит [POODLE SSL Attack](http://nginx.com/blog/nginx-poodle-ssl/). * Шифры, которые наилучшим образом обеспечат защиту. [Mozilla Server Side TLS and Nginx](https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx). # don’t use SSLv3 ref: POODLE CVE-2014-356 - http://nginx.com/blog/nginx-poodle-ssl/ ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - + # Ciphers set to best allow protection from Beast, while providing forwarding secrecy, as defined by Mozilla (Intermediate Set) - https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx 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'; ssl_prefer_server_ciphers on; @@ -251,9 +251,9 @@ location /local { location = /empty.gif { empty_gif; expires -1; - post_action @track; + post_action @track; } - + location @track { internal; proxy_pass http://tracking-backend; @@ -261,7 +261,7 @@ location @track { ``` ###Распределение ресурсов между источниками -Самый простой и наиболее известный способ кросс-доменного запроса на ваш сервер: +Самый простой и наиболее известный способ кросс-доменного запроса на ваш сервер: ``` location ~* \.(eot|ttf|woff) { add_header Access-Control-Allow-Origin *; From aeedb6d2e5eef0ae9c559a8a33c52bbd3686f57a Mon Sep 17 00:00:00 2001 From: Denis Smetannikov Date: Wed, 18 Oct 2017 13:41:16 +0300 Subject: [PATCH 6/6] Fix headers --- README.md | 55 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index cb845b3..618c73b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -#Полезные шаблоны конфигов для Nginx +# Полезные шаблоны конфигов для Nginx Переведено и дополнено на основе репозитория [nginx-conf](https://github.com/lebinh/nginx-conf) от [@lebinh](https://github.com/lebinh) @@ -30,14 +30,14 @@ - [Источники](#Источники) -##Команды Nginx +## Команды Nginx Основные команды для выполнения базовый операций во время работы Nginx. * `nginx -V` - проверить версию Nginx, его скомпилированные параметры конфигурации и установленные модули. * `nginx -t` - протестировать конфигурационный файл и проверить его расположение. * `nginx -s reload` - перезапустить конфигурационный файл без перезагрузки Nginx. -##Location блок на PHP +## Location блок на PHP Простой шаблон для быстрой и легкой установки PHP, FPM или CGI на ваш сайт. ``` location ~ \.php$ { @@ -49,7 +49,7 @@ location ~ \.php$ { fastcgi_pass unix:/path/to/php.sock; } ``` -##Rewrite и Redirection +## Rewrite и Redirection ### Force www [Корректный способ](http://nginx.org/en/docs/http/converting_rewrite_rules.html) определить удаленный сервер по домену без *www* и перенаправить его c *www*: ``` @@ -67,7 +67,7 @@ server { ``` *Также работает для HTTPS * -###Force no-www +### Force no-www Корректный способ определить удаленный сервер по домену c *www* и перенаправить его без *www*: ``` server { @@ -98,7 +98,7 @@ server { ... } ``` -###Force Trailing Slash +### Force Trailing Slash Данная строка добавляет слэш `/` в конце каждого URL, только в том случаее если в URL нет точки или параметров. Тоесть после *example.com/index.php* или *example.com/do?some=123* слэш не поставится. ``` rewrite ^([^.\?]*[^/])$ $1/ permanent; @@ -124,9 +124,9 @@ location /old-site { rewrite ^/old-site/(.*) http://example.org/new-site/$1 permanent; } ``` -##Производительность +## Производительность -###Кэширование +### Кэширование Навсегда разрешить браузерам кэшировать статические содержимое. Nginx установит оба заголовка: Expires и Cache-Control. ``` location /static { @@ -141,7 +141,7 @@ location = /empty.gif { expires -1; } ``` -###Gzip сжатие +### Gzip сжатие ``` gzip on; gzip_buffers 16 8k; @@ -151,11 +151,24 @@ gzip_min_length 256; gzip_proxied any; gzip_vary on; gzip_types - text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml - text/javascript application/javascript application/x-javascript - text/x-json application/json application/x-web-app-manifest+json - text/css text/plain text/x-component - font/opentype application/x-font-ttf application/vnd.ms-fontobject + text/xml + application/xml + application/atom+xml + application/rss+xml + application/xhtml+xml + image/svg+xml + text/javascript + application/javascript + application/x-javascript + text/x-json + application/json + application/x-web-app-manifest+json + text/css + text/plain + text/x-component + font/opentype + application/x-font-ttf + application/vnd.ms-fontobject image/x-icon; gzip_disable "msie6"; ``` @@ -190,7 +203,7 @@ server { } } ``` -###Мониторинг +### Мониторинг По умолчанию [Stub Status](http://nginx.org/ru/docs/http/ngx_http_stub_status_module.html) модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_stub_status_module и активировать с помощью: ``` location /status { @@ -213,8 +226,8 @@ location /status { Также для сбора статистики отлично подходит [ngxtop](https://github.com/lebinh/ngxtop). -##Безопасность -###Активация базовой аунтификации +## Безопасность +### Активация базовой аунтификации Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле: ``` имя:пароль @@ -225,7 +238,7 @@ location /status { auth_basic "This is Protected"; auth_basic_user_file /path/to/password-file; ``` -###Открыть только локальный доступ +### Открыть только локальный доступ ``` location /local { allow 127.0.0.1; @@ -233,7 +246,7 @@ location /local { ... } ``` -###Защита SSL настроек +### Защита SSL настроек * Отключить SSLv3, если он включен по умолчанию. Это предотвратит [POODLE SSL Attack](http://nginx.com/blog/nginx-poodle-ssl/). * Шифры, которые наилучшим образом обеспечат защиту. [Mozilla Server Side TLS and Nginx](https://wiki.mozilla.org/Security/Server_Side_TLS#Nginx). @@ -244,7 +257,7 @@ location /local { 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'; ssl_prefer_server_ciphers on; -##Прочее +## Прочее ###Подзапросы после завершения Бывают ситуации, когда вам необходимо передать запрос на другой бэкэнд **в дополнении или после его обработки**. Первый случай - отслеживать количество завершенных загрузок путем вызова API, после того как пользователь скачал файл. Второй случай -отслеживать запрос, к которому вы бы хотели вернуться как можно быстрее (возможно с пустым .gif) и сделать соответствующие записи в фоновом режиме. [**post_action**](http://wiki.nginx.org/HttpCoreModule#post_action), который позволяет вам определить подзапрос и будет отклонен по окончанию текущего запроса - является [лучшим решением](http://mailman.nginx.org/pipermail/nginx/2008-April/004524.html) для обоих вариантов. ``` @@ -259,7 +272,7 @@ location @track { proxy_pass http://tracking-backend; } ``` -###Распределение ресурсов между источниками +### Распределение ресурсов между источниками Самый простой и наиболее известный способ кросс-доменного запроса на ваш сервер: ```