hostprofi.ru
Подобрать хостинг
Термин

Reverse proxy

краткое определение

Reverse proxy — промежуточный сервер между клиентами и бэкендом. Выполняет SSL-терминацию, балансировку нагрузки, кэширование и скрывает внутреннюю инфраструктуру от внешнего мира.

Reverse proxy стоит перед веб-серверами или приложениями и выступает единой точкой входа для клиентских запросов. Клиент подключается только к прокси — адреса бэкенд-серверов скрыты. Термин «обратный» отличает от forward proxy (прямого): прямой скрывает клиентов от сервера, обратный — серверы от клиентов.

Функции reverse proxy

  • SSL-терминация: TLS расшифровывается на прокси, к бэкенду трафик идёт по HTTP внутри защищённой сети. Управление сертификатами централизовано.
  • Балансировка нагрузки: запросы распределяются между несколькими бэкендами (round-robin, least connections, ip_hash).
  • Кэширование: статика и API-ответы кэшируются — снижает нагрузку на бэкенд.
  • Сжатие: gzip/brotli на стороне прокси без нагрузки на приложение.
  • Защита: скрывает топологию, фильтрует запросы, ограничивает rate limit.
  • A/B тестирование: роутинг процента трафика на разные версии приложения.

Настройка в Nginx

Базовая конфигурация для Node.js-приложения:

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

    location / {
        proxy_pass http://localhost:3000;
        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;
    }
}

Заголовок X-Forwarded-For передаёт реальный IP клиента бэкенду — без него приложение видит только IP прокси.

Reverse proxy vs Forward proxy

Forward proxy стоит перед клиентами: браузер → прокси → интернет. Используется в корпоративных сетях, VPN, SOCKS5. Reverse proxy стоит перед серверами: интернет → прокси → приложение. Разные стороны соединения, разные задачи.

История

Концепция reverse proxy сформировалась в конце 1990-х с ростом нагрузок. Ранние реализации — Squid в режиме акселератора (1996). Nginx создавался в 2004 году специально как высокопроизводительный reverse proxy и HTTP-сервер. CDN-сети (Akamai, Cloudflare) — масштабированные reverse proxy с тысячами точек присутствия.

На что обращать внимание

Правильная передача заголовков критична: без X-Forwarded-Proto приложение не знает, что пришёл HTTPS-запрос. Без X-Real-IP все запросы в логах будут с IP прокси. Таймауты proxy_read_timeout и proxy_connect_timeout в Nginx по умолчанию 60 секунд — для медленных API увеличивают до 120–300 секунд. При балансировке несколько бэкендов объявляются в блоке upstream.

Балансировка нагрузки в Nginx

При наличии нескольких бэкенд-серверов используют upstream:

upstream backend {
    server 10.0.0.1:3000 weight=3;
    server 10.0.0.2:3000 weight=1;
    keepalive 32;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

Директива weight задаёт соотношение нагрузки. keepalive 32 — пул постоянных соединений к бэкенду, снижает overhead на установку TCP.

Мониторинг reverse proxy: Grafana с nginx_exporter отображает количество запросов в секунду, время ответа и коды статусов.

Другие термины