Nginx

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

Nginx (произносится «энджин-икс») — веб-сервер, который создал российский программист Игорь Сысоев; первая публичная версия вышла в 2004 году. Nginx изначально проектировался под огромное число одновременных соединений: один процесс обслуживает тысячи посетителей, не создавая под каждого отдельный поток. Сегодня это один из самых распространенных веб-серверов в мире, на нем работает и этот сайт.

Какие задачи решает

  • Веб-сервер — очень быстро отдает статические файлы: страницы, изображения, стили, скрипты.
  • Обратный прокси — принимает запросы и передает их приложению на Python, Java, PHP или Node.js, скрывая его от интернета.
  • Балансировщик нагрузки — распределяет запросы между несколькими серверами приложения.
  • Шифрование — принимает защищенные соединения TLS (HTTPS) и разгружает от этого приложения.
  • Кэширование и сжатие ответов, ограничение частоты запросов.

Пример настройки

server {
    listen 443 ssl;
    server_name example.ru;

    ssl_certificate     /etc/ssl/example.ru.crt;
    ssl_certificate_key /etc/ssl/example.ru.key;

    location /static/ {
        root /var/www;
        expires 30d;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Nginx принимает HTTPS-соединения, сам отдает статические файлы с хранением в кэше браузера на 30 дней, а остальные запросы передает приложению, сообщая ему настоящий адрес посетителя.

Почему он быстрый

Классические веб-серверы выделяли на каждое соединение отдельный процесс или поток, и тысячи медленных посетителей съедали память. Nginx построен на событиях: несколько рабочих процессов, и каждый обслуживает множество соединений, переключаясь между ними, когда приходят данные. Это экономит память и выдерживает пики трафика.

Версии и форки

В 2019 году компанию Nginx купила американская F5. Часть бывших разработчиков создала российский форк Angie, совместимый по настройкам; в 2024 году появился еще один независимый форк — freenginx. Для проектов с требованиями импортозамещения Angie — частая замена без переписывания конфигурации.

На практике

Nginx стоит перед приложениями почти в любой веб-архитектуре: на отдельном сервере, внутри Docker-контейнера или как вход в кластер Kubernetes (Ingress). Управлять им удобно командами Linux CLI: nginx -t проверяет конфигурацию на ошибки, а nginx -s reload применяет новые настройки без разрыва текущих соединений.