Nginx (Engine X) — веб-сервер с открытым исходным кодом, разработанный Игорем Сысоевым в России. Архитектура основана на событийном цикле (event loop) и неблокирующем вводе-выводе: один рабочий процесс Nginx обрабатывает тысячи одновременных соединений без создания нового потока под каждое. Это принципиально отличает его от Apache с моделью process-per-connection.
Как работает
Nginx запускает N рабочих процессов (worker_processes, обычно равно числу CPU-ядер). Каждый worker работает в однопоточном событийном цикле, используя epoll (Linux), kqueue (FreeBSD) или IOCP (Windows). При поступлении запроса worker не блокируется в ожидании ответа от upstream — он обрабатывает другие соединения пока ждёт. Это обеспечивает эффективность при большом количестве параллельных медленных соединений (long polling, streaming).
Основные режимы работы: HTTP-сервер статики (отдаёт файлы напрямую через sendfile), обратный прокси к upstream-серверам (PHP-FPM, uWSGI, Node.js), балансировщик нагрузки (round-robin, least_conn, ip_hash), SSL/TLS-терминатор, кэширующий прокси (proxy_cache).
Конфигурация Nginx иерархична: глобальный блок → events → http → server → location. Каждый server-блок — один виртуальный хост. Директива location задаёт правила обработки URL с поддержкой регулярных выражений и префиксного матчинга.
История
Игорь Сысоев начал разработку в 2002 году для решения «проблемы C10K» — обслуживания 10 000 одновременных соединений. Первый публичный релиз — 2004 год. В 2011 году основана компания Nginx Inc. для коммерческой поддержки. В 2019 году Nginx Inc. приобретена компанией F5 Networks за $670 млн. Коммерческий NGINX Plus существует параллельно с бесплатным open-source.
Связь с хостингом
На большинстве современных VPS и облачных серверов Nginx — стандартный выбор веб-сервера. Он устанавливается в качестве фронтенда перед PHP-FPM (WordPress, Bitrix), Node.js-приложениями, Python WSGI. Nginx потребляет около 2 МБ RAM в режиме ожидания против 10–20 МБ для Apache. Большинство хостинг-панелей (ISPmanager, Plesk, CyberPanel) устанавливают Nginx как основной или дополнительный веб-сервер.
Архитектура Nginx
Nginx использует event-driven, асинхронную, неблокирующую модель: один master-процесс + N worker-процессов (N = число CPU). Каждый worker обрабатывает тысячи соединений через epoll/kqueue. Отличие от Apache (process-per-request): Nginx потребляет в 5–10 раз меньше памяти при высоком concurrency.
Типичные конфигурации
Как reverse proxy перед uWSGI/Gunicorn. Как балансировщик через upstream. Терминация SSL. Раздача статики с sendfile on; tcp_nopush on. Кэширование proxy_cache. Ограничение rate через limit_req_zone.
Диагностика
Проверка конфига: nginx -t. Перезагрузка без остановки: nginx -s reload. Логи: /var/log/nginx/access.log, /var/log/nginx/error.log. Анализ медленных запросов: awk '$NF > 1' access.log | tail -50. Статус через stub_status.