Инфраструктура

Nginx: 12 настроек, которые спасут ваш прод

2026-09-14 · 12 мин чтения

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

Начнём с самого частого узкого места — воркеров. По умолчанию worker_processes установлен в 1, что на многоядерных машинах означает простой половины железа. Правило простое: auto плюс поднятие лимита файловых дескрипторов.

worker_processes auto;
worker_rlimit_nofile 65535;
events {
    worker_connections 8192;
    multi_accept on;
}

Второй важный блок — таймауты и keepalive. Для API за балансировщиком разумно выставить keepalive_timeout 65 и переиспользовать апстрим-соединения: это убирает лишние TCP-хендшейки и заметно снижает латентность.

Gzip, буферы и кэш

Сжатие на лету включается тремя строками, но типичная ошибка — жать уже сжатое (картинки, видео). Оставьте gzip_types только для текстовых форматов: HTML, CSS, JS, JSON, SVG, XML. Для статики лучше заранее готовить .gz и .br файлы на этапе сборки.

Буферы проксирования влияют на то, сколько памяти уходит на каждый запрос. Дефолтных значений хватает для JSON-ответов, но если вы проксируете большие файлы — увеличьте proxy_buffers и включите proxy_buffering off для стриминга.

Безопасность и лимиты

Не забудьте про limit_req_zone для защиты от брутфорса и server_tokens off, чтобы не светить версию. Итоговый чеклист я собрал в комментариях к конфигу в репозитории проекта — ссылка в конце статьи.

← Все статьи