Forward Proxy vs. Reverse Proxy

В этой статье рассмотрим разницу между шаблонами 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. Микросервисы обращаются друг к другу через прокси. (Фронтенд тоже обращается к этому же прокси).
Второй случай не совсем соответствует картинке в начале статьи, поскольку клиент-микросервис не обязательно во внешней сети относительно конечного сервера. Но благодаря Reverse Proxy он может о конечном сервере не знать, а в этом и есть суть шаблона.

Итоги

Мы рассмотрели шаблоны Forward Proxy и Reverse Proxy.

Разница в том, на чьей стороне работает прокси, а кто остается в неведении относительно его существования. В случае Forward Proxy клиенты знают, что обращаются к прокси, а сервер — нет. В случае Reverse Proxy наоборот: клиенты не знают, что обращаются к прокси.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *