Основы дизайна систем: прокси

Прокси. Что это? Многие из нас слышали о прокси-серверах. Возможно, мы видели параметры конфигурации в некоторых наших программах для ПК или Mac, в которых говорится о добавлении и настройке прокси-серверов или доступе «через прокси».

Итак, давайте разберемся с этой относительно простой, широко используемой и важной технологией.

В вычислениях прокси обычно является сервером, и это сервер, который действует как посредник между клиентом и другим сервером. Это буквально фрагмент кода, который находится между клиентом и сервером. В этом суть прокси.

Если вы не уверены в определениях клиента и сервера, «клиент» - это процесс (код) или машина, которая запрашивает данные у другого процесса или машины («сервер»). Браузер является клиентом, когда запрашивает данные с внутреннего сервера.

Сервер обслуживает клиента, но также может быть клиентом - когда он извлекает данные из базы данных. Тогда база данных - это сервер, сервер - это клиент (базы данных), а также сервер для внешнего клиента (браузер).

Как видно из вышеизложенного, отношения клиент-сервер двунаправленные. Таким образом, одно может быть и клиентом, и сервером. Если был сервер-посредник, который получал запросы, затем отправлял их в другую службу, а затем пересылал ответ, полученный от этой другой службы, обратно клиенту-источнику, то это и был прокси-сервер.

В дальнейшем мы будем называть клиентов клиентами, серверы - серверами, а прокси - связующим звеном между ними.

Поэтому, когда клиент отправляет запрос на сервер через прокси, прокси может иногда маскировать личность клиента - для сервера IP-адрес, который проходит в запросе, может быть прокси, а не исходным клиентом.

Те из вас, кто получает доступ к сайтам или загружает вещи, которые иным образом ограничены (например, из торрент-сети или сайтов, запрещенных в вашей стране), могут узнать этот шаблон - это принцип, на котором построены VPN.

Прежде чем мы двинемся немного глубже, я хочу кое-что сказать - в общем случае термин «прокси» относится к «прямому» прокси. Прямой прокси - это прокси, в котором прокси действует от имени (заменяет) клиента при взаимодействии между клиентом и сервером.

Это отличается от обратного прокси (reverse proxy), где прокси действует от имени сервера.

Ключевое отличие состоит в том, что обратный прокси-сервер предназначен для замены сервера. Часто клиенты даже не знают, что сетевой запрос был маршрутизирован через прокси, и прокси передал его на предполагаемый сервер (и сделал то же самое с ответом сервера).

Таким образом, в прямом прокси-сервере сервер не будет знать, что запрос клиента и его ответ проходят через прокси, а в обратном прокси-сервере клиент не будет знать, что запрос и ответ маршрутизируются через прокси.

Но при проектировании систем, особенно для сложных систем, прокси полезны, а обратные прокси особенно полезны. Вашему обратному прокси-серверу можно делегировать множество задач, которые вы не хотите выполнять на основном сервере - это может быть привратник (gatekeeper), средство проверки (screener), балансировщик нагрузки (load-balancer) и универсальный помощник.


Читайте также:

Комментарии

Популярные сообщения из этого блога

Язык поисковых запросов в Graylog

Нормальные формы, пример нормализации в базе данных

Хэш-таблица: разрешение коллизий