Попробовать
Назад к блогу

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

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

Прямой (forward) прокси работает на стороне клиентов: он стоит рядом с пользователями, отправляет их запросы в интернет и показывает сайтам свой IP вместо их адресов. Обратный (reverse) прокси работает на стороне серверов: он стоит перед сайтом или API, принимает входящий трафик и решает, какой из внутренних серверов ответит. Посредник один и тот же по идее, но защищает он разные стороны соединения.

Ниже разберём, где физически находится каждый тип, чей адрес он скрывает, какие программы обычно выполняют эту роль (Squid, Nginx, HAProxy, Cloudflare и другие), как ведёт себя HTTPS в обоих случаях. В конце — сводная таблица, по которой легко объяснить коллеге, какой прокси нужен проекту.

Прямые прокси под ваши задачи

Прокси дата-центров и резидентские с HTTP и SOCKS5 для скриптов, браузеров и команд

Попробовать

Главный вопрос: кому служит прокси

Отличить два типа проще всего одним вопросом: чьи интересы представляет этот узел?

  • Прямой прокси действует от имени тех, кто отправляет запросы. Сайт видит прокси, а не ноутбук сотрудника или скрипт парсера за ним.
  • Обратный прокси действует от имени владельцев сервиса. Посетитель видит одно публичное имя и не знает, сколько серверов, контейнеров или регионов скрывается за ним.

Удобная аналогия: прямой прокси — проходная на выходе из офиса, обратный — ресепшен компании, которая принимает гостей.

Прямой прокси перед клиентскими ноутбуками и обратный прокси перед бэкенд-серверами в виде двух зеркальных линий
Сверху прямой прокси стоит рядом с клиентами и скрывает их от сайта. Снизу обратный прокси стоит перед бэкенд-серверами и скрывает их от посетителей

Как работает прямой прокси

Клиента настраивают на работу через прокси явно (хост и порт в браузере, системе, программе или PAC-файле) либо прозрачно — когда шлюз перехватывает трафик без настроек на устройстве. Дальше запрос проходит так:

Как работает прямой прокси
Как работает прямой прокси
  1. Программа подключается не к сайту, а к прокси.
  2. Для обычного HTTP она передаёт полный URL, для HTTPS просит открыть туннель методом CONNECT.
  3. Прокси проверяет правила (авторизация, разрешённые домены, лимиты), сам подключается к сайту и возвращает ответ.
  4. В логах сайта посетителем значится IP прокси.

Чем отличаются явная и прозрачная схемы подключения клиентов, подробно рассказано в статье про прозрачный и прямой прокси.

Где применяют прямой прокси

  • Контроль исходящего трафика в компании. Фильтрация категорий сайтов, журналы обращений, кэширование тяжёлых загрузок. Классика среди open source — Squid, у корпоративных шлюзов безопасности те же задачи в большем масштабе.
  • Смена видимого IP и региона. Исследования рынка, проверка цен в других странах, контроль рекламы, тестирование локализованных версий сайтов.
  • Сбор данных. Парсеры распределяют запросы по многим выходным адресам, чтобы вся нагрузка не шла с одного сервера.
  • Приватность в чужих сетях. Сайты не видят адрес устройства (сам по себе прокси трафик не шифрует).

Коммерческие прокси-сервисы — это прямые прокси, проданные как услуга: вы получаете хост, порт и доступы, а трафик выходит через сеть провайдера. Например, прокси дата-центров дают быстрые и стабильные адреса для автоматизации, а резидентские пулы выглядят как обычные домашние подключения.

Как работает обратный прокси

Здесь на стороне клиента ничего не настраивают. DNS-запись shop.example просто указывает на обратный прокси, и каждый посетитель попадает на него автоматически. Порядок такой:

Как работает обратный прокси
Как работает обратный прокси
  1. Браузер узнаёт IP публичного имени и подключается к обратному прокси.
  2. Прокси расшифровывает TLS, читает запрос и применяет правила: маршрутизацию по пути или домену, ограничение частоты, проверки WAF.
  3. Запрос уходит на один из внутренних серверов, часто по частной сети.
  4. Ответ возвращается через прокси, который может сжать его, закэшировать или добавить заголовки безопасности.

Так как внутренний сервер теперь видит подключение от прокси, настоящий адрес посетителя передают в заголовках X-Forwarded-For или стандартизированном Forwarded (RFC 7239) либо через бинарный PROXY protocol, который придумали в HAProxy и поддерживают многие балансировщики.

Где применяют обратный прокси

  • Балансировка нагрузки между серверами приложения с проверками здоровья: сломанный узел автоматически исключается.
  • Завершение TLS в одном месте, без копирования сертификатов на каждый сервер.
  • Кэш и сжатие статики и кэшируемых ответов API.
  • Защита. Скрытие IP исходных серверов, поглощение флуда, фильтрация вредных запросов файрволом веб-приложений. Как устроена фильтрация на прикладном уровне, объясняет статья о прокси-файрволе.
  • Единая точка входа. Путь /api ведёт в один кластер, /static — в другой, десятки микросервисов живут за одним доменом.

Какие программы выполняют каждую роль

ПрограммаПрямой проксиОбратный проксиКомментарий
SquidОсновное применениеВозможно (режим акселератора)Кэширующий прокси со списками доступа, популярен в офисах и у провайдеров
NginxОграниченно (нет встроенного CONNECT)Основное применениеВеб-сервер, обратный прокси и балансировщик
HAProxyНе предназначенОсновное применениеБалансировщик TCP/HTTP, автор PROXY protocol
Envoy, TraefikВозможно как исходящий шлюзОсновное применениеТипичны для Kubernetes и service mesh
Apache httpdmod_proxy с ProxyRequests OnProxyPassОба режима в одном наборе модулей
VarnishНетОсновное применениеHTTP-кэш перед веб-серверами
Cloudflare, Akamai, AWS CloudFrontНетОсновное применение (как CDN)Управляемый обратный прокси по всему миру
Коммерческие прокси-сетиОсновное применениеНетАренда выходных IP для клиентов

Nginx умеет пересылать исходящий HTTP, но для HTTPS нужен сторонний модуль, поэтому для полноценного исходящего прокси обычно берут Squid или специализированный шлюз.

Сравнение прямого и обратного прокси

КритерийПрямой проксиОбратный прокси
Действует от имениКлиентов (пользователи, скрипты, офис)Серверов (сайт, API, кластер)
Где стоитРядом с клиентами, на выходе из сетиРядом с серверами, на входе в сеть
Кого скрываетIP и сеть клиентаIP и устройство исходных серверов
Кто настраиваетСторона клиента: настройки, PAC-файл, шлюзСторона сервера: DNS указывает на прокси
Знает ли клиент о проксиОбычно да (явный режим)Обычно нет
Работа с HTTPSТуннель через CONNECT, шифрование сохраняетсяРасшифровывает TLS и читает запрос
Основные задачиКонтроль доступа, смена IP и региона, кэш загрузокБалансировка, разгрузка TLS, кэш, защита
Типичный софтSquid, шлюзы безопасности, прокси-сервисыNginx, HAProxy, Envoy, Traefik, CDN

Строку про HTTPS путают чаще всего. Обычный прямой прокси не читает ваш HTTPS-трафик: он видит только имя хоста из строки CONNECT и передаёт зашифрованные байты. Исключение — корпоративная TLS-инспекция, когда компания ставит свой корневой сертификат на устройства сотрудников. Обратный прокси, наоборот, хранит сертификат сайта, и расшифровка — его штатная работа.

Можно ли использовать оба сразу

Да, и часто на одном пути запроса. Парсер внутри компании выходит через корпоративный прямой прокси, затем через арендованную прокси-сеть и попадает в интернет-магазин, который стоит за CDN и балансировщиком Nginx. Четыре посредника, по два каждого типа, и каждый знает только соседей.

Одна и та же программа тоже может играть обе роли: Squid ускоряет сайт в обратном режиме, Envoy работает исходящим шлюзом, Apache делает и то и другое в зависимости от директив. Тип определяет место в схеме сети, а не название программы.

Какой прокси нужен вам

Прямой прокси, если:

  • нужно контролировать или журналировать, куда ходят пользователи и серверы вашей сети;
  • скриптам или браузерам нужно выходить с других IP или из других стран;
  • вы собираете открытые данные и хотите распределить запросы по нескольким адресам.

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

  • у вас сайт или API и нужна одна публичная точка входа;
  • требуются балансировка, завершение TLS или кэширование;
  • исходные серверы должны быть скрыты и защищены от прямого трафика.

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

Частые заблуждения

  • VPN — это прямой прокси. Они родственники, оба меняют видимый адрес, но VPN туннелирует весь трафик на сетевом уровне и шифрует его, а прокси работает на уровне отдельных программ и по умолчанию не шифрует.
  • Обратный прокси делает посетителей анонимными. Всё наоборот: он прикрывает серверы и обычно записывает реальный адрес посетителя в логи и заголовки.
  • CDN — отдельная технология. По сути CDN — это распределённый по миру обратный прокси с кэшем.
  • Прямой прокси всегда кэширует. Многие современные, особенно коммерческие прокси-сети, просто передают трафик без кэша.

Частые вопросы о прямом и обратном прокси

Балансировщик нагрузки — это обратный прокси?

Балансировщик седьмого уровня, который читает HTTP-запросы и сам подключается к серверам, по определению является обратным прокси. Балансировщики четвёртого уровня, которые лишь пересылают пакеты, ближе к сетевым маршрутизаторам, хотя HAProxy и похожие продукты умеют работать в обоих режимах.

Cloudflare — прямой или обратный прокси?

CDN и защита Cloudflare — это обратный прокси: домен указывает на Cloudflare, а он уже обращается к вашему серверу. Для исходящего корпоративного трафика у компании есть отдельные продукты, которые работают как прямые прокси, так что ответ зависит от сервиса.

Видит ли прямой прокси мои пароли?

При HTTPS обычный прямой прокси видит только хост, к которому вы подключаетесь, а содержимое остаётся зашифрованным. Исключения — незашифрованный HTTP и корпоративные сети с TLS-инспекцией, поэтому выбирайте надёжных провайдеров и не вводите данные на сайтах без HTTPS.

Скрывает ли обратный прокси мой IP от сайтов?

Нет. Обратный прокси принадлежит сайту, а не вам, и обычно передаёт ваш реальный адрес серверу в заголовке. Чтобы сменить IP, который видят сайты, нужен прямой прокси или VPN на вашей стороне.

Nginx — прямой или обратный прокси?

Nginx создан и в основном используется как обратный прокси и балансировщик. Он может пересылать исходящий HTTP, но без встроенной поддержки HTTPS-туннелей плохо подходит на роль универсального прямого прокси.