Полезные сниппеты для Nginx конфигов

Доброго времени суток, уважаемые хабравчане! В Elasticweb мы негласно ратуем за Nginx и, наверное, мы одни из немногих хостингов, которые не поддерживают Apache и .htaccess соответственно. В связи с этим, большое количество обращений в тех. поддержку связано с оказанием помощи в написании конфигурационного файла для Nginx. Поэтому мы решили собрать коллекцию полезных сниппетов иколлекцию готовых Nging конфигов для наиболее популярных CMS/CMF/Фреймворков на PHP.

ddf20650ceb746499571710d4a1e1a31

Готовые конфиги:

Команды Nginx

Основные команды для выполнения базовых операций во время работы Nginx.

  • nginx -V — проверить версию Nginx, его скомпилированные параметры конфигурации и установленные модули.
  • nginx -t — протестировать конфигурационный файл и проверить его расположение.
  • nginx -s reload — перезапустить конфигурационный файл без перезагрузки Nginx.

Location блок на PHP

Простой шаблон для быстрой и легкой установки PHP, FPM или CGI на ваш сайт.

Rewrite и Redirection

Force www

Корректный способ определить удаленный сервер по домену без www и перенаправить его c www:

Также работает для HTTPS.

Force no-www

Корректный способ определить удаленный сервер по домену c www и перенаправить его без www:

Force HTTPS

Способ для переадресации с HTTP на HTTPS:

Force Trailing Slash

Данная строка добавляет слэш / в конце каждого URL, только в том случаее если в URL нет точки или параметров. Тоесть послеexample.com/index.php или example.com/do?some=123 слэш не поставится.

 

Редирект на страницу

Редирект на сайт

 

Редирект на определенный путь в URI

 

Производительность

Кэширование

Навсегда разрешить браузерам кэшировать статические содержимое. Nginx установит оба заголовка: Expires и Cache-Control.

Запретить кэширование браузерам (например для отслеживания запросов) можно следующим образом:

Gzip сжатие

 

Кэш файлов

Если у вас кешируется большое количество статических файлов через Nginx, то кэширование метаданных этих файлов позволит сэкономить время задержки.

SSL кэш

Подключение SSL кэширования позволит возобновлять SSL сессии и сократить время к следующим обращениям к SSL/TLS протоколу.

Поддержка Upstream

Активация кеширования c использованием Upstream подключений:

Мониторинг

По умолчанию Stub Status модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_stub_status_module и активировать с помощью:

Данная настройка позволит вам получать статус в обычном текстовом формате по общему количеству запросов и клиентским подключениям (принятым, обработанным, активным).

Более информативный статус от Nginx можно получить с помощью Luameter, который несколько сложнее в установке и требует наличия Nginx Lua модуля. Это предоставит следующие метрики по различным конфигурационным группам в формате JSON:

  • Общее количество запросов/ответов.
  • Общее количество ответов сгруппирированных по статус кодам: 1xx, 2xx, 3xx, 4xx, 5xx.
  • Общее количество байт принятых/отправленных клиенту.
  • Промежуточные отрезки времени для оценки минимума, максимума, медианы, задержек и тд.
  • Среднестатистическое количество запросов для простоты мониторинга и составления прогнозов по нагрузке.
  • И прочее…

Пример дашборда от Luameter.

Также для сбора статистики отлично подходит ngxtop.

Безопасность

Активация базовой аунтификации

Для начала вам потребуется создать пароль и сохранить его в обычной текстовом файле:

Затем установить найтройки для server/location блока, который необходимо защитить:

Открыть только локальный доступ

Защита SSL настроек
  • Отключить SSLv3, если он включен по умолчанию. Это предотвратит POODLE SSL Attack.
  • Шифры, которые наилучшим образом обеспечат защиту. Mozilla Server Side TLS and Nginx.

Прочее

Подзапросы после завершения

Бывают ситуации, когда вам необходимо передать запрос на другой бэкэнд в дополнении или после его обработки. Первый случай — отслеживать количество завершенных загрузок путем вызова API, после того как пользователь скачал файл. Второй случай -отслеживать запрос, к которому вы бы хотели вернуться как можно быстрее (возможно с пустым .gif) и сделать соответствующие записи в фоновом режиме. post_action, который позволяет вам определить подзапрос и будет отклонен по окончанию текущего запроса — является лучшим решением для обоих вариантов.

Распределение ресурсов между источниками

Самый простой и наиболее известный способ кросс-доменного запроса на ваш сервер:

 

Источник: http://habrahabr.ru/post/272381/

Вам может также понравиться...

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.