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 применяет новые настройки без разрыва текущих соединений.