// Engineering Log
Прокси-серверы: Часть 1 — Зачем нужны и как работают
Опубликовано 21.09.2026
// Быстрый маршрут
Эта статья относится к теме Серверы и инфраструктура.
Прокси-сервер — это программа, которая принимает сетевые запросы от клиента и сама передаёт их дальше, к целевому серверу. Ответ тоже проходит через прокси. В результате клиент и сервер не соединяются напрямую, а прокси получает возможность проверять, изменять, кешировать и записывать трафик.
Прямой, обратный и прозрачный прокси
Прокси различают по тому, на чьей стороне они работают.
Прямой прокси (forward proxy) стоит на стороне клиентов, например на выходе из офисной сети в интернет. Браузеры и программы явно настроены на работу через него. Целевые сайты видят IP-адрес прокси, а не адреса сотрудников. Прямой прокси применяют для:
- контроля доступа: кому и к каким ресурсам разрешено обращаться;
- аутентификации: выход в интернет только по логину и паролю;
- журналирования: кто, когда и куда обращался;
- фильтрации: блокировка нежелательных сайтов и типов файлов;
- выхода в интернет с одного фиксированного IP-адреса, например чтобы внешний сервис пускал только адрес компании.
Обратный прокси (reverse proxy) стоит на стороне серверов и принимает запросы из интернета вместо них. Клиент обращается к example.ru и не знает, сколько серверов работает за прокси и где они находятся. Обратный прокси применяют для:
- балансировки нагрузки — распределения запросов между несколькими экземплярами приложения;
- TLS-терминации — сертификаты и шифрование обслуживаются в одном месте, а приложения работают по обычному HTTP во внутренней сети;
- маршрутизации —
/api/уходит на один сервер, остальное на другой;shop.example.ruиblog.example.ruобслуживаются разными приложениями на одном IP-адресе; - кеширования ответов приложения;
- ограничения частоты запросов и защиты от перебора паролей;
- сокрытия внутренней инфраструктуры — наружу открыт только прокси.
Прозрачный прокси (transparent proxy) перехватывает трафик без настройки на стороне клиента: маршрутизатор или межсетевой экран перенаправляет соединения на прокси, например правилом REDIRECT или TPROXY в Linux. Для обычного HTTP это работает незаметно для пользователя. Содержимое HTTPS прозрачный прокси без специальной настройки не видит: ему доступно только имя сайта из TLS-рукопожатия (SNI). Чтобы разбирать HTTPS, прокси должен расшифровывать трафик, а на все компьютеры приходится устанавливать корневой сертификат организации. Это сложная и чувствительная с точки зрения безопасности схема, и применять её стоит только там, где она действительно нужна.
Какой трафик проходит через прокси
HTTP-прокси и метод CONNECT
HTTP-прокси понимает протокол HTTP: видит адрес, заголовки и тело запроса, может кешировать ответы и фильтровать по URL. Для HTTPS браузер использует метод CONNECT (RFC 9110): просит прокси открыть TCP-соединение с example.ru:443, после чего прокси просто передаёт зашифрованные байты в обе стороны. В этом режиме прокси знает, к какому сайту идёт соединение, но не видит, какие страницы открываются и что в них передаётся.
SOCKS5
SOCKS5 (RFC 1928) работает уровнем ниже и не разбирает прикладной протокол. Клиент сообщает прокси адрес и порт назначения, и прокси устанавливает соединение от своего имени. Поэтому через SOCKS5 проходит любой TCP-трафик — почтовые клиенты, SSH, базы данных, мессенджеры, — а при поддержке команды UDP ASSOCIATE и UDP. SOCKS5 поддерживает аутентификацию по логину и паролю (RFC 1929). Кешировать и фильтровать по содержимому он не умеет: он не знает, что внутри соединения.
TCP-прокси и TLS: терминация или сквозная передача
Обратный прокси может работать с TLS двумя способами:
- терминация — прокси расшифровывает трафик, видит HTTP-запросы и может маршрутизировать по пути, добавлять заголовки, кешировать. Сертификат хранится на прокси;
- сквозная передача (passthrough) — прокси передаёт зашифрованное соединение на сервер, не расшифровывая его. Маршрутизировать можно только по имени сайта из SNI. Сертификат остаётся на конечном сервере.
Терминация удобнее и даёт больше возможностей. Сквозная передача нужна, когда ключ сертификата не должен покидать сервер приложения или когда приложение само проверяет клиентские сертификаты.
Как сервер узнаёт адрес клиента
За обратным прокси приложение видит все соединения с IP-адреса прокси. Чтобы передать настоящий адрес клиента, используют:
- заголовок
X-Forwarded-For(иX-Forwarded-Protoдля исходной схемы — http или https) — для HTTP; - PROXY protocol — короткий заголовок в начале TCP-соединения, который добавляет прокси. Его поддерживают HAProxy, Nginx и многие приложения; он подходит и для не-HTTP трафика.
Доверять этим данным можно только тогда, когда они пришли от вашего прокси. Иначе клиент может подставить в X-Forwarded-For любой адрес. Поэтому в приложении или на следующем прокси указывают список доверенных адресов, от которых эти заголовки принимаются.
Как проверить работу через прокси
Работу прокси удобно проверять утилитой curl. Запрос через HTTP-прокси с аутентификацией:
curl -x http://user:password@proxy.example.ru:3128 https://example.ru/Запрос через SOCKS5, при котором имя сайта разрешает сам прокси, а не клиент:
curl --socks5-hostname user:password@proxy.example.ru:1080 https://example.ru/Параметр -v покажет, как устанавливается соединение: для HTTPS через HTTP-прокси в выводе виден запрос CONNECT example.ru:443. Многие программы в Linux используют прокси из переменных окружения http_proxy, https_proxy и no_proxy, но это соглашение, а не правило: часть приложений их игнорирует и настраивается отдельно.
Прокси и VPN
Прокси и VPN решают похожие задачи, но устроены по-разному:
- прокси работает на уровне отдельных приложений: через него идёт только трафик программ, которые на него настроены;
- VPN создаёт виртуальный сетевой интерфейс, и через туннель идёт весь трафик системы или заданных сетей, включая программы, которые о прокси ничего не знают;
- шифрование: VPN шифрует трафик между клиентом и сервером VPN; HTTP-прокси и SOCKS5 сами по себе не шифруют канал до прокси, поэтому пароль от прокси и незашифрованный трафик передаются открыто.
Для доступа сотрудников к внутренним ресурсам компании обычно используют VPN. Прокси выбирают, когда нужно управлять выходом в интернет, публиковать сервисы или направлять через отдельный адрес трафик конкретных приложений.
Кеширование сегодня
Кеширующий прямой прокси был особенно полезен, пока большая часть сайтов работала по HTTP. Сейчас почти весь трафик зашифрован, и без расшифровки прямой прокси кешировать его не может. Кеширование полезнее на обратном прокси: там трафик расшифрован, а владелец сам решает, какие ответы приложения можно хранить и сколько.
Какое решение выбрать
| Задача | Решение |
|---|---|
| Опубликовать сайт или приложение с HTTPS, раздавать статические файлы, маршрутизировать по доменам и путям | Nginx (часть 2) |
| Балансировать нагрузку между серверами с активными проверками их состояния, в том числе для не-HTTP сервисов | HAProxy (часть 3) |
| Дать сотрудникам или приложениям SOCKS5-прокси с аутентификацией | Dante (часть 4) |
| Лёгкий универсальный прокси «всё в одном»: HTTP, SOCKS, перенаправление портов | 3proxy (часть 5) |
| Контролировать и учитывать доступ офиса в интернет, фильтровать по спискам сайтов | Squid (часть 6) |
Часто решения сочетают: HAProxy принимает трафик и распределяет его между несколькими серверами с Nginx, а Nginx раздаёт статические файлы и проксирует запросы в приложение.
Ограничения и безопасность
- Открытый прокси опасен. Прокси без аутентификации и ограничения по адресам быстро находят сканеры и начинают использовать для рассылки спама и атак от вашего имени. Доступ к прямому прокси всегда ограничивают списком адресов или паролем.
- Прокси — единая точка отказа. Если через него идёт весь трафик, его отказ останавливает всё. Для важных сервисов ставят два прокси и переключают адрес между ними, например с помощью keepalived.
- Прокси видит трафик. Администратор прокси с расшифровкой TLS получает доступ к паролям и личным данным пользователей. Такие журналы требуют той же защиты, что и сами данные.
- Прокси — не межсетевой экран. Он скрывает адреса и фильтрует запросы на своём уровне, но не заменяет правил фильтрации пакетов на сервере и маршрутизаторе.
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Серверы и инфраструктура
VPS, Linux, веб-стек, миграции, хостинг, базы данных и базовая эксплуатация.
Часто с этим приходят
- Перенести сайт или сервис на новый сервер
- Настроить Linux, Nginx, базу данных и бэкапы
- Разобраться, почему всё работает нестабильно
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
Написать в TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related