Reverse Proxy — что это, как настроить и зачем нужен | Глоссарий FREEHOSTING

Reverse Proxy

Обратный прокси
Reverse Proxy — Сервер, который принимает входящие запросы клиентов и перенаправляет их на один или несколько внутренних бэкендов. Скрывает реальную инфраструктуру, балансирует нагрузку, терминирует TLS, кэширует ответы и применяет правила фильтрации перед передачей запроса приложению.

Определение простыми словами

Обратный прокси сидит «перед» вашими приложениями. Снаружи клиент видит только его — IP, порт, SSL-сертификат. Прокси разбирает запрос (URL, заголовки, куки), решает, какому внутреннему серверу его передать, и возвращает ответ обратно. Бэкенд при этом обычно не имеет публичного IP и доступен только из приватной сети.

В отличие от прямого (forward) прокси, который защищает клиента (например, корпоративный сквид для офисных пользователей), reverse-proxy защищает сервер. Самые популярные реализации — Nginx, HAProxy, Traefik, Caddy, Envoy.

Сравнение

Решение Сильная сторона Где применяют
Nginx Универсальность, кэш, статика Веб-сайты, API-шлюзы
HAProxy L4/L7-балансировка, метрики Высоконагруженные TCP-сервисы, БД
Traefik Автодискавери Docker/K8s Микросервисы, контейнерные стенды
Caddy Автоматический Let’s Encrypt Простые сайты, dev-стенды
Envoy gRPC, service mesh Istio, Consul Connect

Кейсы использования

  • Один публичный IP — много сайтов: прокси разбирает Host-заголовок и направляет на нужный бэкенд.
  • Терминация HTTPS: SSL-сертификат хранится только на прокси, бэкенд работает по чистому HTTP внутри приватной сети.
  • Балансировка нагрузки между N экземплярами приложения с алгоритмами round-robin, least-conn или по хешу.
  • Защитный слой: блокировка ботов, rate-limit, фильтрация по гео, интеграция с WAF (ModSecurity, Cloudflare).
  • Канареечный деплой: 95% трафика на стабильную версию, 5% — на новую с мониторингом ошибок.
  • Негатив: reverse-proxy — единая точка отказа. Без HA-схемы (keepalived + два узла) падение прокси означает падение всех сайтов за ним.

Технические детали

Минимальный конфиг Nginx как reverse-proxy с балансировкой и SSL.

# /etc/nginx/sites-available/app.conf
upstream backend {
  least_conn;
  server 10.0.0.10:8080 max_fails=3 fail_timeout=30s;
  server 10.0.0.11:8080 max_fails=3 fail_timeout=30s;
}

server {
  listen 443 ssl http2;
  server_name app.example.com;

  ssl_certificate     /etc/letsencrypt/live/app.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem;

  location / {
    proxy_pass         http://backend;
    proxy_http_version 1.1;
    proxy_set_header   Host              $host;
    proxy_set_header   X-Real-IP         $remote_addr;
    proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_read_timeout 60s;
  }
}

# Активировать сайт и перезагрузить
ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Не забывайте передавать заголовки X-Real-IP и X-Forwarded-For, иначе на бэкенде в логах окажется только IP прокси.

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

Чем reverse-proxy отличается от балансировщика нагрузки?

Балансировщик — частный случай reverse-proxy, специализированный на распределении трафика. Reverse-proxy шире: умеет кэшировать, переписывать URL, выдавать статику, терминировать SSL и применять политики безопасности.

Можно ли использовать один Nginx и для статики, и как reverse-proxy?

Да, это типовая схема: Nginx раздаёт картинки, JS, CSS из локальной папки и проксирует /api на backend-сервер. Это снижает нагрузку на приложение.

Как обеспечить отказоустойчивость reverse-proxy?

Поднять минимум два узла с keepalived и плавающим IP, либо использовать DNS-балансировку с round-robin и health-checks. На уровне бизнеса — облачный балансировщик типа AWS ALB.