Хотелось бы уточнить, что означают некоторые параметры в файле
конфигурации nginx и услышать пару советов по их значениям для
различных случаев:
worker_processes 5;
Число рабочих процессов. Если весь сайт помещается в память компьютера,
то лучше ставить 1. Если нет, то 5-10. Если используется select или poll,
то 10-20.
connections 2000;
Число соединений, которое может обслужить один рабочий процесс.
На самом деле, сюда ещё нужно прибавить число дискриптров дисковых файлов.
post_accept_timeout 60;
Таймаут при ожидании запроса клиента после принятия соедиения.
client_header_timeout 3m;
Таймаут при чтении всего заголовка запроса клиента (3 минуты).
client_body_timeout 3m;
Таймаут при чтении тела запроса клиента.
send_timeout 3m;
Таймаут при посылке ответа клиенту.
connection_pool_size 256;
Начальный размер пула соедиения.
client_header_buffer_size 1k;
Буфер для чтения заголовка клиента. Выделяется из connection pool.
large_client_header_buffers 4 2k;
Если заголовок запроса больше client_header_buffer_size, то выделяется
до 4 буферов по 2К.
request_pool_size 4k;
Начальный размер пула запроса.
output_buffers 1 32k;
Задаёт размер буферов (1 буфер размером 32К) для передачи ответа.
Не имеет смысла, если используется sendfile.
postpone_output 1460;
Не передавать клиенту часть ответа меньше этого размера.
sendfile on;
Разрешает использовать sendfile.
tcp_nopush on;
Включает TCP опции TCP_NOPUSH (FreeBSD) или TCP_CORK (Linux) при
использовании sendfile.
Кстати, ещё можно поставить "tcp_nodelay on".
send_lowat 12000;
Работает только на платформах, поддерживающих kqueue, то есть, FreeBSD,
OpenBSD и NetBSD.
keepalive_timeout 75 20;
Задаёт таймаут для keep-alive соединения (75 секунд) и выдаёт
заголовок "Keep-Alive: timeout=20".