Прокси и CDN
Разбираемся, какие посредники стоят между браузером и сервером и зачем они нужны.
Прокси — посредник, через который проходит сетевой запрос. CDN — распределённая сеть серверов, отдающих контент с ближайшей к пользователю точки.
Прямой прокси (forward proxy)
Стоит на стороне клиента и отправляет запросы в интернет от его имени. Сервер видит прокси, а не реального пользователя.
- Зачем: кэширование, фильтрация контента (корпоративные сети), анонимность, обход ограничений.
- VPN — близкий родственник: тоже пропускает ваш трафик через промежуточный узел.
Обратный прокси (reverse proxy)
Стоит на стороне сервера и принимает запросы вместо него. Клиент думает, что говорит с сервером, а на деле — с прокси, который перенаправляет запрос внутрь. Это рабочая лошадка современного бэкенда (nginx, Caddy, Traefik).
| Задача обратного прокси | Польза |
| Балансировка нагрузки | распределяет запросы между несколькими серверами |
| Терминация TLS | расшифровывает HTTPS, разгружая бэкенд |
| Кэширование | отдаёт частые ответы, не дёргая приложение |
| Защита | скрывает реальные серверы, фильтрует атаки |
Клиент --> [ Обратный прокси (nginx) ] --> Сервер 1
--> Сервер 2 (балансировка)
--> Сервер 3
Балансировщик нагрузки
Частный случай обратного прокси — балансировщик (load balancer). Когда один сервер не справляется, ставят несколько и распределяют запросы между ними (по очереди, по нагрузке, по «прилипанию» сессии). Для клиента это один адрес, за которым прячется ферма серверов.
CDN: контент поближе к пользователю
CDN (Content Delivery Network) — сеть серверов по всему миру, кэширующих статику (картинки, CSS, JS, видео). Когда пользователь из Токио запрашивает картинку, её отдаёт ближайший узел CDN в Японии, а не сервер в США. Зачем это нужно:
- Скорость: меньше расстояние — меньше задержка (RTT).
- Разгрузка: основной сервер не отдаёт миллионы запросов на статику.
- Устойчивость: нагрузка размазана, проще пережить всплески и DDoS.
Пользователь (Токио) --> CDN-узел в Токио (быстро, кэш)
|
v (только если нет в кэше)
Исходный сервер (origin) в США
Зачем это веб-разработчику
Почти любой продакшен стоит за обратным прокси и CDN. Понимание этого объясняет: почему в логах приложения чужой IP (его подменил прокси — реальный приходит в заголовке X-Forwarded-For), почему статику кладут на CDN, почему «сервер видит HTTP, хотя снаружи HTTPS» (TLS терминируется на прокси). Это базовая архитектура веба.
Итог
- Прямой прокси — посредник на стороне клиента; обратный — на стороне сервера.
- Обратный прокси балансирует нагрузку, терминирует TLS, кэширует, защищает.
- CDN отдаёт статику с ближайшего к пользователю узла — быстрее и устойчивее.
- Реальный IP клиента за прокси приходит в заголовке
X-Forwarded-For.