Как настроить Nginx в качестве обратного прокси (reverse proxy) в Linux

Ответ

Настройка Nginx в качестве обратного прокси (reverse proxy) — это стандартная задача при развертывании веб-приложений. Reverse proxy принимает клиентские запросы и перенаправляет их на один или несколько бэкенд-серверов (например, Gunicorn, Node.js), скрывая их внутреннюю структуру.

Основные преимущества:

  • Балансировка нагрузки: Распределение запросов между несколькими серверами.
  • SSL/TLS-терминирование: Централизованная обработка HTTPS-запросов.
  • Кеширование: Сохранение и быстрая отдача статического контента.
  • Безопасность: Сокрытие IP-адресов и портов внутренних сервисов.

Пример конфигурации:

  1. Создайте файл конфигурации для вашего сайта, например, в /etc/nginx/sites-available/myapp.
  2. Добавьте в него следующий код, который перенаправляет все запросы на локальный сервер, работающий на порту 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;
    }
}
  1. Активируйте конфигурацию и перезапустите Nginx:
# Создаем символическую ссылку для активации сайта
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/

# Проверяем конфигурацию на наличие ошибок
sudo nginx -t

# Перезапускаем Nginx для применения изменений
sudo systemctl restart nginx