Пост

Nginx. Принципы работы

Принципы работы веб-сервера nginx

Nginx. Принципы работы

Версии nginx

Есть две версии nginx

  • Основная - это последняя версия nginx с новыми функционалом (на текущий момент (январь 2026) это 1.29.4)
  • Стабильная - это версия, которая нацелена на стабильность и безопасность. Новый функционал не добавляется. Рекомендуется ставить ее. (на январь 2026 это https://nginx.org/ru/CHANGES.ru-1.28)

Все остальные версии являются устаревшими

На рабочих серверах рекомендуется использовать стабильную версию

Master Worker

nginx использует модель главный процесс master и несколько рабочих процессов worker

Например, увидим это сразу все процессы nginx

1
2
3
4
5
6
ps -a | grep nginx
1 root      0:00 nginx: master process nginx -g daemon off;
29 nginx     0:00 nginx: worker process
30 nginx     0:00 nginx: worker process
31 nginx     0:00 nginx: worker process
32 nginx     0:00 nginx: worker process
  • master процесс
    • Запускается от root
    • Читает и проверяет конфиги
    • Слушает порты 80 и 443
    • Управляет worker процессами
    • Обрабатывает сигналы, например при мягкой перезагрузки nginx -s reload соединения не теряются
  • worker процесс
    • Запускается от имени обычного пользователя nginx
    • Каждый worker работает независимо и обрабатывают все сетевые соединения
    • Кол-во worker_processes обычно равно ядрам CPU, в примере выше их 4

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

Как примерно идет обработка запроса:

  • Получили запрос от клиента
  • Рабочий процесс отправляет запрос на бекенд, например php-fpm
  • Освободившись он сразу же обрабатывает другой запрос
  • Когда бекенд ответил, об этом уведомляется рабочий процесс
  • Рабочий процесс читает ответ и отправляет его клиенту

Благодаря такой архитектуре, один рабочий процесс может одновременно обрабатывать тысячи соединений.

ВАЖНО. Мастер-процесс НЕ обрабатывает сетевые запросы от клиентов. Его работа это управление.

Роли сервера

  • Отдача статики. Базовая функция сервера отдавать статические файлы как они есть html,css,js,изображения, видео
  • Обратный прокси. nginx сам решает какому приложению дальше отдать запрос. PHP, Python, Ruby, Node.js
  • Балансировщик нагрузки. Если бекендов несколько, nginx может распределять нагрузку между ними по кругу.
Авторский пост защищен лицензией CC BY 4.0 .

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

Бесплатно расчитаю время разработки, предложу решение вашей задачи.