Ответ
Nginx часто используется как обратный прокси (reverse proxy). Он принимает клиентские запросы и перенаправляет их на один или несколько бэкенд-серверов (например, на Python-приложение, работающее через Gunicorn или uWSGI). Это позволяет скрыть внутреннюю архитектуру, распределять нагрузку и обрабатывать SSL.
Пример базовой конфигурации для проксирования запросов на приложение, работающее на localhost:8000
:
server {
# Nginx будет слушать 80 порт
listen 80;
# Доменное имя, на которое будет отзываться сервер
server_name example.com;
location / {
# Перенаправляем все запросы на внутренний сервер
proxy_pass http://127.0.0.1:8000;
# Передаем важные заголовки, чтобы приложение знало
# реальный хост и IP-адрес клиента
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Ключевые задачи обратного прокси:
- Балансировка нагрузки: Распределение запросов между несколькими экземплярами приложения.
- SSL/TLS Termination: Обработка HTTPS-запросов, снимая эту нагрузку с бэкенд-серверов.
- Кэширование: Сохранение статических ответов для ускорения отдачи контента.
- Безопасность: Фильтрация вредоносных запросов и сокрытие IP-адресов внутренних серверов.