- Пример конфигурации

user www www;
worker_processes 2;

error_log /var/log/nginx-error.log info;

events {
    use kqueue;
    worker_connections 2048;
}

...

- Директивы

accept_mutex

Синтаксис:	accept_mutex on | off;
Умолчание:	accept_mutex off;
Контекст:	events

Если accept_mutex включён, рабочие процессы будут принимать новые соединения по очереди. В противном случае о новых соединениях будет сообщаться сразу всем рабочим процессам, и при низкой интенсивности поступления новых соединений часть рабочих процессов может работать вхолостую.

accept_mutex_delay

Синтаксис:	accept_mutex_delay время;
Умолчание:	accept_mutex_delay 500ms;
Контекст:	events

При включённом accept_mutex задаёт максимальное время, в течение которого рабочий процесс вновь попытается начать принимать новые соединения, если в настоящий момент новые соединения принимает другой рабочий процесс.

daemon

Синтаксис:	daemon on | off;
Умолчание:	daemon on;
Контекст:	main

Определяет, будет ли nginx запускаться в режиме демона. Используется в основном для разработки.

debug_connection

Синтаксис:	debug_connection адрес | CIDR | unix:;
Умолчание:	—
Контекст:	events

Включает отладочный лог для отдельных клиентских соединений. Для остальных соединений используется уровень лога, заданный директивой error_log. Отлаживаемые соединения задаются IPv4 или IPv6 адресом или сетью. Соединение может быть также задано при помощи имени хоста. Отладочный лог для соединений через UNIX-сокеты включается параметром "unix:".

events {
    debug_connection 127.0.0.1;
    debug_connection localhost;
    debug_connection 192.0.2.0/24;
    debug_connection ::1;
    debug_connection 2001:0db8::/32;
    debug_connection unix:;
    ...
}

Для работы директивы необходимо сконфигурировать nginx с параметром --with-debug.

debug_points

Синтаксис:	debug_points abort | stop;
Умолчание:	—
Контекст:	main

Эта директива используется для отладки.

В случае обнаружения внутренней ошибки, например, утечки сокетов в момент перезапуска рабочих процессов, включение debug_points приводит к созданию core-файла (abort) или остановке процесса (stop) с целью последующей диагностики с помощью системного отладчика.

env

Синтаксис:	env переменная[=значение];
Умолчание:	env TZ;
Контекст:	main

По умолчанию nginx удаляет все переменные окружения, унаследованные от своего родительского процесса, кроме переменной TZ. Эта директива позволяет сохранить часть унаследованных переменных, поменять им значения или же создать новые переменные окружения.

Пример использования:

env MALLOC_OPTIONS;
env PERL5LIB=/data/site/modules;
env OPENSSL_ALLOW_PROXY_CERTS=1;

Переменная окружения NGINX используется для внутренних целей nginx и не должна устанавливаться непосредственно самим пользователем.

error_log

Синтаксис:	error_log файл [уровень];
Умолчание:	error_log logs/error.log error;
Контекст:	main, http, mail, stream, server, location

Конфигурирует запись в лог. На одном уровне конфигурации может использоваться несколько логов. Если на уровне конфигурации main запись лога в файл явно не задана, то используется файл по умолчанию.

Первый параметр задаёт файл, который будет хранить лог. Специальное значение stderr выбирает стандартный файл ошибок. Запись в syslog настраивается указанием префикса "syslog:". Запись в кольцевой буфер в памяти настраивается указанием префикса "memory:" и размера буфера и как правило используется для отладки.

Второй параметр определяет уровень лога и может принимать одно из следующих значений: debug, info, notice, warn, error, crit, alert или emerg. Уровни лога, указанные выше, перечислены в порядке возрастания важности. При установке определённого уровня в лог попадают все сообщения указанного уровня и уровней большей важности. Например, при стандартном уровне error в лог попадают сообщения уровней error, crit, alert и emerg. Если этот параметр не задан, используется error.

events

Синтаксис:	events { ... }
Умолчание:	—
Контекст:	main

Предоставляет контекст конфигурационного файла, в котором указываются директивы, влияющие на обработку соединений.

include

Синтаксис:	include файл | маска;
Умолчание:	—
Контекст:	любой

Включает в конфигурацию другой файл или файлы, подходящие под заданную маску. Включаемые файлы должны содержать синтаксически верные директивы и блоки. Пример использования:

include mime.types;
include vhosts/*.conf;

load_module

Синтаксис:	load_module файл;
Умолчание:	—
Контекст:	main

Загружает динамический модуль. Пример:

load_module modules/ngx_mail_module.so;

lock_file

Синтаксис:	lock_file файл;
Умолчание:	lock_file logs/nginx.lock;
Контекст:	main

Для реализации accept_mutex и сериализации доступа к разделяемой памяти nginx использует механизм блокировок. На большинстве систем блокировки реализованы с помощью атомарных операций, и эта директива игнорируется. Для остальных систем применяется механизм файлов блокировок. Эта директива задаёт префикс имён файлов блокировок.

master_process

Синтаксис:	master_process on | off;
Умолчание:	master_process on;
Контекст:	main

Определяет, будут ли запускаться рабочие процессы. Эта директива предназначена для разработчиков nginx.

multi_accept

Синтаксис:	multi_accept on | off;
Умолчание:	multi_accept off;
Контекст:	events

Если multi_accept выключен, рабочий процесс за один раз будет принимать только одно новое соединение. В противном случае рабочий процесс за один раз будет принимать сразу все новые соединения.

Директива игнорируется в случае использования метода обработки соединений kqueue, т.к. данный метод сам сообщает число новых соединений, ожидающих приёма.

pcre_jit

Синтаксис:	pcre_jit on | off;
Умолчание:	pcre_jit off;
Контекст:	main

Разрешает или запрещает использование JIT-компиляции (PCRE JIT) для регулярных выражений, известных на момент парсинга конфигурации.

Использование PCRE JIT способно существенно ускорить обработку регулярных выражений.

pid

Синтаксис:	pid файл;
Умолчание:	pid logs/nginx.pid;
Контекст:	main

Задаёт файл, в котором будет храниться номер (PID) главного процесса.

ssl_engine

Синтаксис:	ssl_engine устройство;
Умолчание:	—
Контекст:	main

Задаёт название аппаратного SSL-акселератора.

thread_pool

Синтаксис:	thread_pool имя threads=число [max_queue=число];
Умолчание:	thread_pool default threads=32 max_queue=65536;
Контекст:	main

Задаёт имя и параметры пула потоков, используемого для многопоточной обработки операций чтения и отправки файлов без блокирования рабочего процесса.

Параметр threads задаёт число потоков в пуле.

Если все потоки из пула заняты выполнением заданий, новое задание будет ожидать своего выполнения в очереди. Параметр max_queue ограничивает число заданий, ожидающих своего выполнения в очереди. По умолчанию в очереди может находиться до 65536 заданий. При переполнении очереди задание завершается с ошибкой.

timer_resolution

Синтаксис:	timer_resolution интервал;
Умолчание:	—
Контекст:	main

Уменьшает разрешение таймеров времени в рабочих процессах, за счёт чего уменьшается число системных вызовов gettimeofday(). По умолчанию gettimeofday() вызывается после каждой операции получения событий из ядра. При уменьшении разрешения gettimeofday() вызывается только один раз за указанный интервал.

Пример использования:

timer_resolution 100ms;

use

Синтаксис:	use метод;
Умолчание:	—
Контекст:	events

Задаёт метод, используемый для обработки соединений. Обычно нет необходимости задавать его явно, поскольку по умолчанию nginx сам выбирает наиболее эффективный метод.

user

Синтаксис:	user пользователь [группа];
Умолчание:	user nobody nobody;
Контекст:	main

Задаёт пользователя и группу, с правами которого будут работать рабочие процессы. Если группа не задана, то используется группа, имя которой совпадает с именем пользователя.

worker_aio_requests

Синтаксис:	worker_aio_requests число;
Умолчание:	worker_aio_requests 32;
Контекст:	events

При использовании aio совместно с методом обработки соединений epoll, задаёт максимальное число ожидающих обработки операций асинхронного ввода-вывода для одного рабочего процесса.

worker_connections

Синтаксис:	worker_connections число;
Умолчание:	worker_connections 512;
Контекст:	events

Задаёт максимальное число соединений, которые одновременно может открыть рабочий процесс.

Следует иметь в виду, что в это число входят все соединения (в том числе, например, соединения с проксируемыми серверами), а не только соединения с клиентами. Стоит также учитывать, что фактическое число одновременных соединений не может превышать действующего ограничения на максимальное число открытых файлов, которое можно изменить с помощью worker_rlimit_nofile.

worker_rlimit_nofile

Синтаксис:	worker_rlimit_nofile число;
Умолчание:	—
Контекст:	main

Изменяет ограничение на максимальное число открытых файлов (RLIMIT_NOFILE) для рабочих процессов. Используется для увеличения ограничения без перезапуска главного процесса.

worker_shutdown_timeout

Синтаксис:	worker_shutdown_timeout время;
Умолчание:	—
Контекст:	main

Задаёт таймаут в секундах для плавного завершения рабочих процессов. По истечении указанного времени nginx попытается закрыть все открытые соединения для ускорения завершения.

working_directory

Синтаксис:	working_directory каталог;
Умолчание:	—
Контекст:	main

Задаёт каталог, который будет текущим для рабочего процесса. Основное применение - запись core-файла, в этом случае рабочий процесс должен иметь права на запись в этот каталог.