Перейти к содержанию
Innovialabs

Прямой и обратный прокси: в чём разница и зачем нужен каждый

Основы3 мин

Коротко

Прямой прокси стоит перед клиентами и отправляет их запросы в интернет от своего имени, а обратный прокси стоит перед серверами и принимает запросы из интернета вместо них.

Коротко о главном

Оба вида прокси — посредники между клиентом и сервером. Разница в том, на чьей они стороне:

  • Прямой прокси (forward proxy) работает на клиентов. Клиент знает о прокси и сознательно отправляет через него трафик. Сервер назначения видит прокси, а не клиента.
  • Обратный прокси (reverse proxy) работает на серверы. Клиент обычно о нём не знает: он подключается к «сайту», а прокси решает, какой бэкенд на самом деле ответит.

Простое правило: прямой прокси прячет клиентов от серверов, обратный — серверы от клиентов.

Как идёт запрос

Прямой прокси:

[Ноутбук] --> [Прямой прокси] --> интернет --> [example.com]
  настроен       проверяет правила,          видит IP прокси
  на прокси      логирует, кэширует

Обратный прокси:

[Браузер] --> интернет --> [Обратный прокси] --> [app-сервер 1]
  думает, что              TLS, маршруты,  \-> [app-сервер 2]
  это example.com          кэш, лимиты      \-> [статика]

В первом случае прокси принадлежит организации пользователя. Во втором — владельцу сайта.

Зачем нужен прямой прокси

  • Корпоративная фильтрация: блокировка категорий сайтов, соблюдение правил использования сети.
  • Логирование и аудит исходящего трафика для службы безопасности.
  • Контролируемый выход в интернет: серверы из закрытой сети ходят наружу через один известный адрес, который партнёру легко добавить в белый список.
  • Кэширование часто скачиваемого, например зеркала пакетов в сборочной сети.
  • Доступ «из другого места», похожий на VPN. Разница: прокси обычно обслуживает отдельные протоколы или приложения, а VPN туннелирует весь трафик устройства.

Классический пример — Squid. Многие корпоративные шлюзы безопасности и облачные secure web gateway тоже по сути прямые прокси.

Зачем нужен обратный прокси

  • TLS termination: прокси хранит сертификаты и обрабатывает HTTPS, а бэкенды внутри закрытой сети общаются по обычному HTTP.
  • Балансировка нагрузки между несколькими экземплярами приложения.
  • Маршрутизация: /api — в один сервис, / — во фронтенд, /static — в файловое хранилище.
  • Кэширование ответов и быстрая отдача статики.
  • Защита: rate limiting, ограничение размера запроса, WAF, сокрытие внутренней схемы.
  • Деплой без простоя: переключение трафика между старой и новой версией.

Типичные примеры: nginx, HAProxy, Traefik, Envoy, а также CDN вроде Cloudflare — по сути, глобально распределённый обратный прокси перед вашим сервером.

Минимальный обратный прокси на nginx:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate     /etc/ssl/example.crt;
    ssl_certificate_key /etc/ssl/example.key;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Сравнение

Прямой проксиОбратный прокси
Действует от имениКлиентовСерверов
Кто настраиваетСторона клиента (браузер, ОС, сеть)Владелец сайта (DNS указывает на прокси)
Клиент о нём знаетОбычно даОбычно нет
Главные целиКонтроль, фильтрация, выход в сеть, анонимностьСкорость, безопасность, масштабирование
ПримерыSquid, корпоративные шлюзыnginx, HAProxy, Traefik, Cloudflare

Частые ошибки

  • Потеря реального IP клиента. За обратным прокси приложение видит адрес прокси. Передавайте X-Forwarded-For и доверяйте ему только со стороны прокси.
  • Доверие заголовкам от кого угодно. Если бэкенд доступен напрямую, клиент подделает X-Forwarded-For. Держите бэкенды в закрытой сети.
  • Неверная схема в редиректах. Когда TLS завершается на прокси, приложение думает, что запрос пришёл по HTTP, и строит ссылки http://. Передавайте X-Forwarded-Proto.
  • Открытый прямой прокси. Прокси без аутентификации на публичном IP быстро начнут использовать посторонние.
  • Кэширование личных страниц. Кэш обратного прокси должен учитывать cookies и Cache-Control, иначе один пользователь увидит данные другого.

Частые вопросы

HTTP-балансировщик — разновидность обратного прокси: он принимает запросы клиентов и передаёт их одному из серверов. Некоторые балансировщики сетевого уровня просто пересылают пакеты, не завершая соединение, — в строгом смысле это не прокси.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.