intermediate
Forward и reverse proxies
Отличайте client-side forward proxies от server-side reverse proxies, включая headers, TLS termination, buffering и trust boundaries.
Forward proxy рядом с клиентом — корпоративные proxy, VPN egress, dev tools. Клиент настраивает явно. Reverse proxy перед серверами — Nginx, Envoy, cloud LB. Клиент считает, что говорит с одним origin.
Forward: Client → Proxy → Internet → Origin
Reverse: Client → Reverse proxy → App servers
Reverse proxy завершает TLS, маршрутизирует по host/path, добавляет headers (`X-Forwarded-For`, `X-Request-Id`), буферизует медленных клиентов и экранирует app processes. Доверяйте forwarding headers только от известных hop'ов.
На интервью: почему Node слушает private ports за reverse proxy; безопасное восстановление client IP; отличие от API gateway (больше policy на gateway).
Типовые ошибки: доверие подделанному `X-Forwarded-For` из интернета; двойное сжатие; потеря WebSocket upgrade headers.
Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.
Чеклист:
- TLS и публичный exposure на reverse proxy.
- Проверка forwarding headers на trust boundary.
- Сохранение hop-by-hop headers для upgrades.
- Кто владеет timeouts и buffering.