Основы дизайна систем: прокси
Прокси. Что это? Многие из нас слышали о прокси-серверах. Возможно, мы видели параметры конфигурации в некоторых наших программах для ПК или Mac, в которых говорится о добавлении и настройке прокси-серверов или доступе «через прокси».
Итак, давайте разберемся с этой относительно простой, широко используемой и важной технологией.
В вычислениях прокси обычно является сервером, и это сервер, который действует как посредник между клиентом и другим сервером. Это буквально фрагмент кода, который находится между клиентом и сервером. В этом суть прокси.
Если вы не уверены в определениях клиента и сервера, «клиент» - это процесс (код) или машина, которая запрашивает данные у другого процесса или машины («сервер»). Браузер является клиентом, когда запрашивает данные с внутреннего сервера.
Сервер обслуживает клиента, но также может быть клиентом - когда он извлекает данные из базы данных. Тогда база данных - это сервер, сервер - это клиент (базы данных), а также сервер для внешнего клиента (браузер).
Как видно из вышеизложенного, отношения клиент-сервер двунаправленные. Таким образом, одно может быть и клиентом, и сервером. Если был сервер-посредник, который получал запросы, затем отправлял их в другую службу, а затем пересылал ответ, полученный от этой другой службы, обратно клиенту-источнику, то это и был прокси-сервер.
В дальнейшем мы будем называть клиентов клиентами, серверы - серверами, а прокси - связующим звеном между ними.
Поэтому, когда клиент отправляет запрос на сервер через прокси, прокси может иногда маскировать личность клиента - для сервера IP-адрес, который проходит в запросе, может быть прокси, а не исходным клиентом.
Те из вас, кто получает доступ к сайтам или загружает вещи, которые иным образом ограничены (например, из торрент-сети или сайтов, запрещенных в вашей стране), могут узнать этот шаблон - это принцип, на котором построены VPN.
Прежде чем мы двинемся немного глубже, я хочу кое-что сказать - в общем случае термин «прокси» относится к «прямому» прокси. Прямой прокси - это прокси, в котором прокси действует от имени (заменяет) клиента при взаимодействии между клиентом и сервером.
Это отличается от обратного прокси (reverse proxy), где прокси действует от имени сервера.
Ключевое отличие состоит в том, что обратный прокси-сервер предназначен для замены сервера. Часто клиенты даже не знают, что сетевой запрос был маршрутизирован через прокси, и прокси передал его на предполагаемый сервер (и сделал то же самое с ответом сервера).
Таким образом, в прямом прокси-сервере сервер не будет знать, что запрос клиента и его ответ проходят через прокси, а в обратном прокси-сервере клиент не будет знать, что запрос и ответ маршрутизируются через прокси.
Но при проектировании систем, особенно для сложных систем, прокси полезны, а обратные прокси особенно полезны. Вашему обратному прокси-серверу можно делегировать множество задач, которые вы не хотите выполнять на основном сервере - это может быть привратник (gatekeeper), средство проверки (screener), балансировщик нагрузки (load-balancer) и универсальный помощник.
Читайте также:
Комментарии
Отправить комментарий