Nginx

Высокопроизводительный HTTP-сервер и реверс-прокси с асинхронной событийно-ориентированной архитектурой.

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

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

В основе лежит событийно-ориентированная (event-driven) архитектура. Вместо создания нового процесса или потока для каждого HTTP-запроса, Nginx использует фиксированное количество рабочих процессов (worker processes), которые обрабатывают тысячи соединений в одном потоке через механизмы epoll (Linux) или kqueue (BSD).

Применяется как фронтенд-сервер для раздачи статических файлов, как балансировщик нагрузки между бэкенд-узлами и как SSL-терминатор для шифрования трафика. Основные задачи включают:

  • Проксирование протоколов HTTP, FastCGI, uWSGI и SCGI;
  • Ограничение частоты запросов (rate limiting);
  • Gzip-сжатие и кэширование ответов.

По данным Netcraft, Nginx обслуживает более 30% самых посещаемых сайтов в мире. Конфигурация worker_connections 1024; позволяет одному процессу держать более тысячи соединений, что делает его стандартом для высоконагруженных систем.