В этой статье рассмотрим разницу между шаблонами Forward Proxy и Reverse Proxy.
В обоих случаях Proxy — это сервер-посредник. Он стоит посередине между клиентом и сервером:
client <-> proxy <-> server
Разница в том, какую роль он играет в цепочке client <-> proxy <-> server. Forward Proxy работает в связке с клиентом (выступает от его имени), а Reverse proxy — с сервером (выступает за сервер):
- Client proxy: (client <-> proxy) <-> server
- Server proxy: client <-> (proxy <-> server)
Хотя технически прокси — просто отдельный сервер.
Forward Proxy
Forward Proxy действует в связке с клиентом, а конечный сервер «не знает» о его существовании.
Пример
В Интернете имеется три компьютера:
- X — наш компьютер, клиент
- Y — прокси-сайт, proxy.example.org
- Z — сайт, который мы хотим открыть, www.example.net
Обычно мы просто открываем Z, то есть соединение такое:
X <-> Z
Но иногда мы используем Forward Proxy:
(X <-> Y) <-> Z
Например, если провайдер заблокировал опальный сайт, но мы все равно хотим на него попасть и используем VPN.
То есть мы как клиент имеем дело с прокси, а сервер об этом не знает. Мы посещаем сервер от имени прокси.
Reverse Proxy
В шаблоне Reverse Proxy наоборот: клиент остается в неведении, что имеет дело с прокси. Сервер работает с ним в связке:
client <-> ( proxy <-> server )
Примеры
- Если запросов много, и единственный сервер не с ними справляется, то ставят много серверов, а перед ними прокси, который перенаправляет запрос на ближайший сервер. Клиент же обращается к единственному прокси.
- Или имеется система микросервисов, но API зафиксирован на одном прокси-сервере. Прокси анализирует запрос и перенаправляет его к нужному микросервису. Такой случай мы реализовывали в статье по Spring Cloud API Gateway. Микросервисы обращаются друг к другу через прокси. (Фронтенд тоже обращается к этому же прокси).
Итоги
Мы рассмотрели шаблоны Forward Proxy и Reverse Proxy.
Разница в том, на чьей стороне работает прокси, а кто остается в неведении относительно его существования. В случае Forward Proxy клиенты знают, что обращаются к прокси, а сервер — нет. В случае Reverse Proxy наоборот: клиенты не знают, что обращаются к прокси.