Ответ
Nginx — это высокопроизводительный веб-сервер, который чаще всего используется в качестве обратного прокси-сервера (reverse proxy), балансировщика нагрузки и сервера для раздачи статического контента.
Его популярность обусловлена асинхронной, событийно-ориентированной архитектурой, которая позволяет эффективно обрабатывать тысячи одновременных соединений.
Основные сценарии:
-
Обратный прокси (Reverse Proxy): Nginx принимает запросы от клиентов и перенаправляет их на один или несколько бэкенд-серверов (например, Gunicorn, uWSGI, Node.js). Это позволяет скрыть внутреннюю архитектуру, централизовать логирование и обработку SSL.
-
Балансировщик нагрузки (Load Balancer): Распределяет входящий трафик между несколькими бэкенд-серверами для обеспечения отказоустойчивости и масштабируемости приложения.
-
Раздача статики: Nginx чрезвычайно эффективен для быстрой отдачи статических файлов (HTML, CSS, JS, изображения), разгружая тем самым бэкенд-приложение.
-
SSL/TLS Termination: Nginx берёт на себя шифрование и дешифрование HTTPS-трафика, отправляя на бэкенд уже незашифрованные запросы, что упрощает конфигурацию и снижает нагрузку на приложение.
Пример конфигурации (обратный прокси для Python-приложения):
# /etc/nginx/sites-available/myapp
server {
listen 80; # Слушать порт 80 для HTTP-запросов
server_name myapp.com; # Доменное имя
# Раздача статических файлов напрямую
location /static/ {
alias /var/www/myapp/static/;
}
# Все остальные запросы проксируются на бэкенд (Gunicorn)
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}