Ответ
Настройка Nginx в качестве обратного прокси (reverse proxy) — это стандартная задача при развертывании веб-приложений. Reverse proxy принимает клиентские запросы и перенаправляет их на один или несколько бэкенд-серверов (например, Gunicorn, Node.js), скрывая их внутреннюю структуру.
Основные преимущества:
- Балансировка нагрузки: Распределение запросов между несколькими серверами.
- SSL/TLS-терминирование: Централизованная обработка HTTPS-запросов.
- Кеширование: Сохранение и быстрая отдача статического контента.
- Безопасность: Сокрытие IP-адресов и портов внутренних сервисов.
Пример конфигурации:
- Создайте файл конфигурации для вашего сайта, например, в
/etc/nginx/sites-available/myapp
. - Добавьте в него следующий код, который перенаправляет все запросы на локальный сервер, работающий на порту 8000.
# /etc/nginx/sites-available/myapp
server {
# Слушать порт 80 для входящих HTTP-соединений
listen 80;
# Имя домена, на которое будет откликаться этот серверный блок
server_name example.com www.example.com;
# Настройки для всех запросов к этому домену
location / {
# Устанавливаем заголовки, чтобы бэкенд-сервер получил
# информацию о реальном клиенте
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;
# Перенаправляем запрос на бэкенд-приложение
proxy_pass http://localhost:8000;
}
}
- Активируйте конфигурацию и перезапустите Nginx:
# Создаем символическую ссылку для активации сайта
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
# Проверяем конфигурацию на наличие ошибок
sudo nginx -t
# Перезапускаем Nginx для применения изменений
sudo systemctl restart nginx