Другое

Настройка Nginx в качестве обратного прокси: пошаговое руководство

В этой статье вы узнаете, как настроить Nginx в качестве обратного прокси-сервера для перенаправления запросов к backend-серверам, написать конфигурационный файл, проверить работоспособность и избежать распространённых ошибок.

Обновлено 4 июля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Nginx 1.24+Ubuntu 22.04 LTSDebian 12

Введение

Обратный прокси-сервер позволяет скрыть backend-сервера от внешнего мира, балансировать нагрузку и добавлять дополнительные функции, такие как шифрование SSL. Nginx — популярный выбор благодаря скорости и простоте конфигурации. После выполнения этого руководства вы сможете настроить Nginx для перенаправления внешних запросов к локальным или удалённым серверам, обеспечивая чистый и защищённый фронтенд.

💡 Совет: Храните конфигурационные файлы в /etc/nginx/, используйте контроль версий для служебных файлов и всегда тестируйте изменения перед перезапуском.

Требования

  • Установленный Nginx версии 1.24 или выше (nginx -v).
  • Доступ к системе с правами root (или пользователя с sudo).
  • Backend-сервер, работающий на HTTP (http://backend_ip:backend_port) или HTTPS.
  • Операционная система: Ubuntu 22.04 LTS, Debian 12 или любая Linux-дистрибутивная система.

Пошаговая инструкция

Шаг 1: Установка и проверка Nginx

# Для Ubuntu/Debian
apt update
apt install -y nginx
# Проверка версии
nginx -v

⚠️ Важно: Убедитесь, что порт 80 не занят другим веб-сервером (например, Apache).

Шаг 2: Создание конфигурации reverse proxy

Откройте основной конфигурационный файл (/etc/nginx/sites-available/default). Для этого можно использовать nano или любой другой текстовый редактор:

nano /etc/nginx/sites-available/default

Добавьте следующий блок внутри файла (или замените существующий блок server):

server {
    listen 80;
    server_name proxy.example.com;  # Замените на ваш домен или IP

    location / {
        # Основная директива перенаправления
        proxy_pass http://backend.example.com:8080;
        # Передача заголовков клиета
        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.example.com, backend.example.com и порт 8080 на фактические значения вашего backend-сервера.

Сохраните файл (Ctrl+O, затем Enter), выйдите (Ctrl+X).

Шаг 3: Тестирование конфигурации

Перед перезапуском выполните проверку синтаксиса:

nginx -t

Если ошибок нет, перезапустите Nginx:

systemctl restart nginx

Шаг 4: Проверка работы reverse proxy

С удалённого компьютера (или другой терминал с доступом в интернет) выполните:

curl -I http://proxy.example.com/

Вы должны увидеть ответ от backend-сервера (например, HTTP/1.1 200). Если вы видите страницу, обслуживаемую Nginx, reverse proxy работает.

Шаг 5: Дополнительные настройки и защита

Шифрование SSL/TLS (если вы хотите HTTPS):

server {
    listen 443 ssl;
    server_name proxy.example.com;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/private.key;

    location / {
        proxy_pass https://backend.example.com:8443;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Ограничение по IP (добавьте перед location):

    allow 192.168.1.100;   # Разрешённый IP
    deny all;              # Запретить остальных

⚠️ Важно: После изменения конфигурации всегда запускайте nginx -t перед перезапуском.

Проверка результата

  1. Функциональность: Убедитесь, что все запросы (GET, POST и т.д.) корректно перенаправляются.
  2. Заголовки: Проверьте, что заголовки (Host, X-Real-IP), добавленные в конфигурации, присутствуют в запросах backend-сервера.
  3. Логи: Просмотрите nginx_access.log и error.log для выявления ошибок.

Возможные проблемы

СимптомВероятная причинаРешение
502 Bad GatewayНеправильный proxy_pass (неверный хост/порт)Проверьте DNS, доступность backend-сервера и корректность порта
SSL handshake failedСертификат не загружен или устарелУкажите правильный путь к .pem файлам и убедитесь, что они не истекли
404 Not Found в backendНеверный URI или отсутствует базовый путьДобавьте proxy_pass http://backend.example.com:8080; с нужным путём или используйте rewrite
Nginx не запускается после измененийСинтаксическая ошибка в конфигурацииЗапустите nginx -t, исправьте ошибки, затем перезапустите

Если проблема сохраняется, проверьте systemctl status nginx и содержимое error.log (/var/log/nginx/error.log).

Часто задаваемые вопросы

Как настроить Nginx в качестве обратного прокси для локального веб-сервера?
Что делает директива `proxy_pass` в Nginx?
Как проверить, что reverse proxy работает?
Как добавить SSL/TLS к reverse proxy?

Полезное

Установка и проверка Nginx
Создание конфигурации reverse proxy
Тестирование конфигурации
Проверка работы reverse proxy
Дополнительные настройки и защита

Эта статья помогла вам решить проблему?