Чем прямой прокси отличается от обратного?
DNS, WebSocket и другие протоколы
Прямой прокси действует от имени клиентов и скрывает их от серверов, обратный — от имени серверов и скрывает их от клиентов. Механика одна, разница в том, чьи интересы он представляет и кто его настраивает.
Прямой (forward) прокси
- Клиент о нём знает: настройки браузера, переменная
HTTPS_PROXY, PAC-файл. - Для HTTPS клиент шлёт
CONNECT host:443, и прокси просто туннелирует байты, не видя содержимого, если только это не корпоративный MITM с собственным корневым сертификатом. - Зачем: фильтрация и аудит исходящего трафика, кеширование, единый egress IP для allowlist партнёров.
Обратный (reverse) прокси
- Клиент думает, что говорит с конечным сервером: DNS указывает на прокси.
- Примеры: nginx, HAProxy, Envoy, Cloudflare.
- Функции: TLS-терминация, балансировка, кеш, сжатие, rate limiting, WAF, маршрутизация путей на разные сервисы.
Нюансы обратного прокси
- Приложение видит IP прокси. Реальный берут из
X-Forwarded-ForилиForwarded, но только если запрос пришёл от доверенного прокси, — иначе заголовок подделывается. X-Forwarded-Protoсообщает, что снаружи был HTTPS; без него приложение строитhttp://в редиректах.- Таймауты и лимит тела на прокси — частая причина 502, 504 и 413.
Коротко для собеседования
Прямой прокси выбирает и настраивает клиент, обратный — владелец сервиса, и клиент о нём не знает. Для бэкенда главное — доверять X-Forwarded-For и X-Forwarded-Proto только от своего прокси; API gateway — тот же обратный прокси с аутентификацией и квотами.