Nginx оптимизация и использование

Домашняя станица nginx с русскоязычной документацией. nginx (engine x; по-русски произносится как энджин-экс) можно использовать как HTTP -сервер, почтовый прокси-сервер и HTTP accelerator (reverse proxy). Применение nginx целесообразно прежде всего для статических веб-сайтов и как прокси-сервера перед динамическими сайтами. Nginx, как и Lighttpd, часто используют для отдачи статического содержимого, генерируемого «тяжёлым» веб-приложением, работающим под управлением другого веб-сервера. Архитектурно Nginx — это асинхронный сервер, который использует один главный процесс для приема соединений и несколько рабочих процессов для их обработки.

nginx кэширует только ответы на запросы get.

Читайте также:

Команды NGINX:

  • nginx -t Проверяет конфигурацию NGINX.
  • nginx -T Проверяет конфигурацию NGINX и выводит ее проверенной на экран. Эта команда полезна при поиске поддержки.
  • nginx -s signal Флаг -s отправляет сигнал главному процессу NGINX. Вы можете отправлять такие сигналы, как stop, quit, reload и reopen. stop немедленно прекращает процесс NGINX, quit останавливает процесс NGINX после завершения обработки запросов в полете, reload перезагружает конфигурацию, reopen дает NGINX команду повторно открывать файлы журнала. Используйте метод reload для аккуратной перезагрузки конфигурации без остановки сервера (изменяет конфигурацию на лету, не отбрасывая никаких пакетов):
$ nginx -s reload
  • nginx -h Показывает справочное меню NGINX.
  • nginx -v Показывает версию NGINX.
  • nginx -V Показывает версию NGINX, информацию о сборке и аргументы конфигурации, где даны модули, встроенные в двоичный файл NGINX.

Что такое default_server в Nginx

Для того чтобы Nginx обрабатывал клиентский запросы с неизвестным доменом или пустым полем "Host" заголовка запроса. В каких случаях это может произойти, например когда

  • пользователь пытается перейти по IP-адрес сервера в браузер
  • или у вас много доменов, таких как dieg.info, wiki.dieg.info, to.dieg.info и не все из них прописаны в файле конфигурации Nginx.
  • Или в DNS ваш домен указан со звездочкой, то есть Wilcard

В блоке сервера (server), в директиву listen добавляется флаг default_server, Nginx объявляет этот сервер сервером по умолчанию. После этого Nginx будет использовать сервер по умолчанию для обработки запросов, когда их заголовок HTTP-хоста не будет соответствовать каким-либо другим блокам сервера. Флаг default_server может быть добавлен только один раз в блок сервера с любой комбинацией IP:порт, указанной в качестве параметра директивы listen. Однако флаг default_server можно использовать несколько раз для разных комбинаций IP:порт.

server {
 
listen 80 default_server;
#...
}

Если запросы без поля "Host" в заголовке не должны обрабатываться, можно определить сервер, который будет их отклонять:

server {
    listen      80;
    server_name "";
    return      444;
}

Здесь в качестве имени сервера указана пустая строка, которая соответствует запросам без поля “Host” в заголовке, и возвращается специальный для nginx код 444, который закрывает соединение.

Модули и директивы

Проверить какие модули подгружает Nginx:

2>&1 nginx -V | tr -- - '\n' | grep _module

Директивы:

Модули:

Настройки размера буфера в Nginx и поиск медленных запросов

  • Устанавливает размер буфера для чтения тела запроса клиента, если размер тела запроса выше чем указанный параметр, то часть тела или тело целиком записывается во временный файл. Не рекомендуется ставить высокие значения, так как средний размер тела запроса не превышает несколько сотен байт: client_body_buffer_size 24k;
  • Определяет максимальный размер тела запроса клиента: client_max_body_size 6m;
  • Устанавливает размер буфера для чтения заголовков запроса клиента. Для большинства запросов буфера в 1 Кб достаточно, однако запросы с длинными cookies могут не укладываться в данный размер: client_header_buffer_size 1k;

Параметры php-fpm:

  • emergency_restart_threshold 5 Параметр, сообщающий о том, что если больше 5 дочерних процессов с сигналом ошибки или отказк, то FPM-мастер (главный процесс) перезагружается
  • emergency_restart_interval 2m Параметр, определяющий, в течение какого времени должны умереть 5 процессов, чтобы мастер-процесс выполнил грейсфул рестарт самого себя
  • process_control_timeout 10s Параметр, который говорит, сколько времени можно подождать перед реакцией на сигнал от мастер-процесса, эти 10 секунд дополнительные позволят процессу завершить все задачи с большим шансом перед тем, как он умрет

Стандартные параметры PM (process manager-а) pm = dynamic. Данные параметр указывает, что кол-во pm-процессов будет динамически создаваться в зависимости от настроек, представленных ниже.

pm.max_children = 5
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 200

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

slowlog /path/to/php-fpm-slow.log
PQ VPS сервера в 28+ странах.