В чем разница между прокси-сервером и обратным прокси-сервером?
В чем разница между прокси-сервером и обратным прокси-сервером?
Ответы:
Предыдущие ответы были точными, но, возможно, слишком краткими. Я постараюсь добавить несколько примеров.
Прежде всего, слово «прокси» описывает кого-то или что-то, действующее от имени кого-то другого.
В компьютерной сфере мы говорим об одном сервере, действующем от имени другого компьютера.
В целях доступности я ограничу свое обсуждение веб-прокси - однако идея прокси не ограничивается веб-сайтами.
Большинство обсуждений веб-прокси относится к типу прокси, известному как «прямой прокси».
В данном случае прокси-событие заключается в том, что «прямой прокси» извлекает данные с другого веб-сайта от имени исходного запрашивающего.
Для примера приведу три компьютера, подключенных к Интернету.
Обычно можно подключиться напрямую от X --> Z.
Тем не менее, в некоторых случаях, это лучше Y --> Z
от имени X
, которое цепи следующим образом : X --> Y --> Z
.
Вот (очень) частичный список использования прямого прокси-сервера:
1) X не может получить доступ к Z напрямую, потому что
a) Кто-то, имеющий административные полномочия в отношении X
интернет-соединения, решил заблокировать любой доступ к сайту Z
.
Примеры:
Вирус Storm Worm распространяется, обманывая людей familypostcards2008.com
, поэтому системный администратор заблокировал доступ к сайту, чтобы предотвратить случайное заражение пользователей.
Сотрудники крупной компании тратят слишком много времени facebook.com
, поэтому руководство хочет, чтобы доступ был заблокирован в рабочее время.
Местная начальная школа запрещает доступ в Интернет на playboy.com
веб-сайте.
Правительство не может контролировать публикацию новостей, поэтому оно контролирует доступ к новостям, блокируя такие сайты, как wikipedia.org
. Смотрите TOR или FreeNet .
б) Администратор Z
заблокировал X
.
Примеры:
Администратор Z заметил попытки взлома, исходящие от X, поэтому администратор решил заблокировать IP-адрес X (и / или сетевой диапазон).
Z это сайт форума. X
спамит на форуме. Z блоков X.
Для этого примера я перечислю три компьютера, подключенных к Интернету.
Обычно можно подключиться напрямую от X --> Z.
Однако в некоторых случаях администратору лучше Z
ограничить или запретить прямой доступ и заставить посетителей сначала пройти Y. Так что , как и раньше, у нас есть данные для его извлечения Y --> Z
от имени X
, которые цепей следующим образом : X --> Y --> Z
.
На этот раз в отличие от «прямого прокси-сервера» отличается тем, что на этот раз пользователь X
не знает, к какому доступу он обращается Z
, потому что X
он видит только то, с кем он общается Y
. Сервер Z
невидим для клиентов, и только обратный прокси-сервер Y
виден снаружи. Обратный прокси не требует (прокси) конфигурации на стороне клиента.
Клиент X
думает, что он только общается с Y
( X --> Y
), но реальность такова, что Y
переадресация всего общения ( X --> Y --> Z
снова).
В приведенных выше сценариях Z
есть возможность выбора Y
.
(X --> Y) --> Z
, наоборот: X --> (Y --> Z)
.
Пара простых определений будет:
Forward Proxy: действует от имени запрашивающей стороны (или потребителя услуг)
Обратный прокси-сервер: действует от имени поставщика услуг / контента.
Я нашел диаграмму ниже, чтобы быть очень полезной. Это просто показывает архитектуру прямой и обратной настройки прокси от клиента к серверу через Интернет. Это изображение поможет вам лучше понять ответ qyb2zm302 и другие ответы.
Вы также можете посмотреть это видео с F5 's DevCentral Питера Сильвы.
Источник изображения: Quora . Тем не менее, согласно Martijn Pieters , это изображение может быть от Pulse Secure Community или с сайта Julien Pauli (на французском языке) по адресу developpez.com.
Это напомнило мне классическую пословицу:
Картинка стоит 1000 слов.
Прямой прокси против Обратного прокси (2012) очень четко объясняет разницу между прямым и обратным прокси.
Ответ qyb2zm302 подробно описывает применение прокси, но он раскрывает фундаментальную концепцию прямого и обратного прокси. Для обратного прокси, X → Y → Z, X знает о Y, а не о Z, а не наоборот.
Прокси - это просто посредник для общения (запросы + ответы). Клиент <-> Прокси <-> Сервер
Прокси действует от имени клиента. Клиент знает обо всех трех машинах, участвующих в цепочке. Сервер не
Прокси действует от имени сервера. Клиент знает только о прокси. Сервер знает всю цепочку.
Мне кажется, что прямое и обратное - это просто запутанные, зависимые от перспективы имена для клиентского и серверного прокси. Я предлагаю отказаться от первого для второго, для явного общения.
Конечно, чтобы еще больше усложнить ситуацию, не каждая машина является исключительно клиентом или сервером. Если в контексте присутствует двусмысленность, лучше явно указать, где находится прокси-сервер и какие каналы он туннелирует.
Некоторые диаграммы могут помочь:
Вперед прокси
Обратный прокси
Разница в первую очередь в развертывании. Прямой и обратный веб-прокси имеют одинаковые базовые функции. Они принимают запросы на HTTP-запросы в различных форматах и предоставляют ответ, обычно путем доступа к исходному или контактному серверу.
Полнофункциональные серверы обычно имеют контроль доступа, кэширование и некоторые функции отображения ссылок.
Прямой прокси-сервер - это прокси-сервер, доступ к которому осуществляется путем настройки клиентского компьютера. Клиенту нужна поддержка протокола для функций прокси (перенаправление, проверка подлинности прокси и т. Д.). Прокси-сервер прозрачен для пользователя, но не для приложения.
Обратный прокси-сервер - это прокси-сервер, который развернут как веб-сервер и ведет себя как веб-сервер, за исключением того, что вместо локального составления содержимого из программ и диска он перенаправляет запрос на исходный сервер. С точки зрения клиента это является веб - сервер, так что опыт пользователя является полностью прозрачным.
Фактически, один экземпляр прокси-сервера может работать как прямой и обратный прокси-сервер одновременно для разных групп клиентов.
Прокси: он делает запрос от имени клиента . Таким образом, сервер вернет ответ прокси, а прокси перешлет ответ клиенту. Фактически, сервер никогда не «узнает», кем был клиент (IP-адрес клиента); он будет знать только прокси. Тем не менее, клиент определенно знает сервер, поскольку он по существу форматирует HTTP-запрос, предназначенный для сервера, но он просто передает его прокси.
Обратный прокси-сервер: получает запрос от имени сервера . Он перенаправляет запрос на сервер, получает ответ и затем возвращает ответ клиенту. В этом случае клиент никогда не «узнает», кто был фактическим сервером (IP-адрес сервера) (за некоторыми исключениями); он будет знать только прокси. Сервер будет знать или не знать фактического клиента, в зависимости от конфигурации обратного прокси.
Лучшее объяснение здесь с диаграммами:
В то время как прямой прокси-сервер от имени клиентов ( или запрашивающих хостов ) , обратный прокси-сервер от имени серверов.
В действительности, в то время как прямой прокси-сервер скрывает идентификационные данные клиентов, обратный прокси-сервер скрывает идентификационные данные серверов.
Прокси-сервер проксирует (и, возможно, кэширует) исходящие сетевые запросы к различным не обязательно связанным публичным ресурсам через Интернет. Обратный прокси-сервер захватывает (и, возможно, кэширует) входящие запросы из Интернета и распределяет их по различным внутренним частным ресурсам, обычно для целей высокой доступности.
Cloudflare имеет отличную статью с изображениями, объясняющими это в деталях.
Проверьте здесь: Что такое обратный прокси? | Прокси-серверы объяснил
Прокси (прямой прокси):
Когда компьютеры в вашей локальной сети подключаются к прокси-серверу, который выходит в Интернет. Преимущества включают в себя только доступ к Интернету на сервере. Люди снаружи не имеют доступа к компьютерам напрямую. Прямые прокси могут улучшить доступ в Интернет для пользователей путем кэширования загрузок. Они также могут быть использованы для ограничения доступа к определенным сайтам. Кроме того, общему адресу нужен только прокси-сервер, а не клиенты, подключающиеся к нему.
Обратный прокси:
Обратный прокси является противоположностью прямого прокси. Вместо этого он действует как прокси от имени подключаемых серверов. Вместо непосредственного доступа к удаленному серверу пользователь проходит через обратный прокси-сервер и оттуда направляется на соответствующий сервер. Только обратный прокси-сервер будет нуждаться в SSL-сертификате, потребуется только один общедоступный IP-адрес, и он может обрабатывать балансировку нагрузки входящих запросов для улучшения общего пользовательского опыта.
Источник изображения: создание прямого прокси с использованием маршрутизации запросов приложений
Я понимаю с точки зрения Apache, что прокси означает, что если сайт x прокси для сайта y, то запросы для x возвращают y.
Обратный прокси-сервер означает, что ответ от y настроен так, что все ссылки на y становятся x.
Так что пользователь не может сказать, что прокси участвует ...
Согласно моему пониманию ...
Начнем с того, что, как всем известно, прокси-сервер означает «полномочия представлять кого-то другого». Теперь есть две вещи, прямой и обратный прокси.
Предположим, вы хотите получить доступ к «Google», и «Google», в свою очередь, будет иметь n серверов для ответа на этот конкретный запрос.
Теперь в этом случае, когда вы запрашиваете что-то у Google и не хотите, чтобы Google видел ваш IP-адрес, вы будете использовать прямой прокси-сервер, как описано ниже.
A → B → C
Теперь вы A, отправляющий запрос через B. Таким образом, C будет думать, что запрос поступает от B, а не A. Таким образом, вы можете предотвратить доступ IP-адреса ваших клиентов к внешнему миру.
Теперь в этом случае, чтобы вы поняли, мы возьмем тот же случай прямого прокси. Здесь вы запросили что-то для Google, который, в свою очередь, собирается отправить один запрос на сервер приложений или другой прокси-сервер для получения ответа. Так что эти вещи будут происходить как объяснено ниже.
A → B → C
C → D
C ← D
A ← B ← C
Из приведенной выше диаграммы видно, что запрос был отправлен на C из B, а не из A. Затем из C будет один запрос, отправленный в D. Аналогичным образом ответ будет отправлен в C из D, а затем в B и A.
Вышеприведенная диаграмма говорит, что важен только контекст, хотя оба прокси-сервера работают одинаково, но прокси-сервер на стороне клиента скрывает информацию о клиенте, в то время как прокси-сервер на стороне скрывает информацию на стороне сервера.
Прямые прокси предоставляют клиенту анонимность (например, Tor ).
Обратные прокси- серверы обеспечивают анонимность внутренних серверов (т. Е. Интеллектуальные серверы за DMZ).
Вот пример обратного прокси (в качестве балансировщика нагрузки).
Клиент заходит на сайт website.com, и на сервере, на котором он работает, работает обратный прокси-сервер. Обратным прокси-сервером является Pound . Pound принимает запрос и отправляет его на один из трех серверов приложений, расположенных за ним. В этом примере Pound является балансировщиком нагрузки. То есть он балансирует нагрузку между тремя серверами приложений.
Серверы приложений передают содержимое сайта обратно клиенту.
Если нет прокси
Чтобы увидеть со стороны клиента и сервера одинаково:
Клиент -> Сервер
полномочие
Со стороны клиента:
Клиент -> Прокси -> Сервер
Со стороны сервера:
Клиент -> Сервер
Обратный прокси
Со стороны клиента:
Клиент -> Сервер
Со стороны сервера:
Клиент -> Прокси -> Сервер
Поэтому я думаю, что если он настроен пользователем-клиентом - он называется прокси-сервером, - если он настроен менеджером сервера, это обратный прокси-сервер.
Поскольку цели и причины его настройки различны, они по-разному обрабатывают данные и используют разное программное обеспечение.
User side | Server side
client <-> proxy <--> reverse_proxy <-> real server
Взгляд с точки зрения пользователя: при отправке запроса на прокси или обратный прокси- сервер:
прокси - требует два аргумента :
1) что получить и 2) какой прокси-сервер использовать промежуточный
обратный прокси - требуется один аргумент :
1) что получить
Обратный прокси-сервер извлекает содержимое с другого сервера без ведома пользователя и возвращает результат, как если бы он был получен с обратного прокси-сервера .
Большинство предыдущих ответов являются хорошими, но, по моему мнению, ни один из них не подходит так хорошо, чтобы достаточно хорошо рассмотреть «обратное» качество, которое отличает их. Чтобы сделать это, нужно дать какой-то способ визуализации «обратной» природы того, что по сути является одним и тем же (прокси), и это должно быть дано достаточно абстрактно.
Прокси (неявно «вперед прокси») соединяет несколько локальных клиентов к любому удаленному серверу:
c--
|--p--s
c--
Обратный прокси - сервер для соединения нескольких локальных серверов в любое один удаленный клиенте (обратите внимание , как макет реверс):
s--
|--p--c
s--
Это действительно перспективный вопрос, и правильное понимание концепции требует абстрагирования несущественных (для конкретной концепции) деталей, хотя они могут быть очень важны, когда речь идет о прагматике операций с доверенными лицами. К таким деталям относится тот факт, что в обоих сценариях реальность такова, что несколько клиентов подключаются к нескольким серверам, что клиенты и серверы могут не быть локальными или удаленными, где находится интернет-облако или какая видимость существует между клиентом и сервером.