Чим відрізняється проксі-сервер від зворотного проксі-сервера?
Чим відрізняється проксі-сервер від зворотного проксі-сервера?
Відповіді:
Попередні відповіді були точними, але, можливо, занадто лаконічними. Спробую додати кілька прикладів.
Перш за все, слово "проксі" описує когось або щось, що діє від імені когось іншого.
У комп'ютерній царині ми говоримо про один сервер, який діє від імені іншого комп'ютера.
З метою доступності я обмежуся своїм обговоренням веб-проксі, однак ідея проксі не обмежується веб-сайтами.
Більшість обговорень веб-проксі стосується типу проксі, відомого як "проксі-проксі".
У цьому випадку подія проксі-сервера полягає в тому, що "проксі-проксі" отримує дані з іншого веб-сайту від імені оригінального запитувача.
Для прикладу я перерахую три комп’ютери, підключені до Інтернету.
Зазвичай, підключитися можна безпосередньо з 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 .
b) Адміністратор Z
блокується X
.
Приклади:
Адміністратор Z помітив спроби злому, що надходять з X, тому адміністратор вирішив заблокувати IP-адресу X (та / або netrange).
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)
.
Пара простих визначень:
Проксі-сервер: функціонування від імені запитувача (або споживача послуги)
Зворотний проксі: Діє від імені виробника послуг / контенту.
Наведена нижче діаграма була дуже корисною. Він просто показує архітектуру налаштування прямого та протилежного проксі-сервера від клієнта до сервера через Інтернет. Це зображення допоможе вам краще зрозуміти відповідь qyb2zm302 та інші відповіді.
Ви також можете дивитися відео з F5 «s DevCentral Пітер Сільва.
Джерело зображення: Quora . Однак, відповідно до Мартіна Пітерса , це зображення може бути зі спільноти Pulse Secure або з сайту Жульєна Паулі (французькою мовою) на веб-сайті developez.com.
Це нагадало мені класичне прислів’я:
Малюнок вартує 1000 слів.
Forward Proxy vs. Reverse Proxy (2012) дуже чітко пояснює різницю між прямим та зворотним проксі.
Відповідь qyb2zm302 чудово деталізує програми проксі-серверів, але він просувається на фундаментальну концепцію між прямими і зворотними проксі-серверами. Для зворотного проксі X - Y → Z, X знає про Y, а не Z, а не навпаки.
Проксі - це посередник для спілкування (запити + відповіді). Клієнт <-> Проксі <-> Сервер
Проксі діє від імені клієнта. Клієнт знає про всі три машини, що беруть участь у ланцюжку. Сервер ні.
Проксі-сервер діє від імені сервера. Клієнт знає лише про проксі. Сервер знає весь ланцюжок.
Мені здається, що прямі та зворотні просто плутають, залежні від точки зору імена для клієнтських та серверних проксі. Я пропоную відмовитися від першого для останнього, для явного спілкування.
Звичайно, щоб ще більше ускладнити справу, не кожна машина є виключно клієнтом або сервером. Якщо в контексті є неоднозначність, краще чітко вказати, де знаходиться проксі, і комунікації, які він тунелює.
Деякі діаграми можуть допомогти:
Вперед проксі
Зворотний проксі
Різниця полягає насамперед у розгортанні. Усі проксі-сервери вперед та назад мають однакові основні функції. Вони приймають запити на HTTP-запити в різних форматах і надають відповідь, як правило, отримуючи доступ до вихідного або контактного сервера.
Повністю представлені сервери зазвичай мають контроль доступу, кешування та деякі функції відображення посилань.
Проксі-проксі - це проксі-сервер, доступ до якого здійснюється за допомогою налаштування клієнтської машини. Клієнту потрібна підтримка протоколу для функцій проксі (перенаправлення, аутентифікація проксі тощо). Проксі-сервер прозорий для користувачів, але не для програми.
Зворотний проксі - це проксі-сервер, який розгортається як веб-сервер і веде себе як веб-сервер, за винятком того, що замість локального складання вмісту з програм та диска він пересилає запит на початковий сервер. З точки зору клієнта це є веб - сервер, так що досвід користувача є повністю прозорим.
Фактично, один екземпляр проксі може одночасно працювати як прямий і зворотний проксі для різних груп клієнтів.
Проксі: це запит від імені клієнта . Отже, сервер поверне відповідь проксі, а проксі передасть відповідь клієнту. Насправді сервер ніколи не «дізнається», хто був клієнтом (IP-адреса клієнта); це буде знати лише проксі. Однак клієнт, безумовно, знає сервер, оскільки він по суті форматує HTTP-запит, призначений для сервера, але він просто передає його проксі.
Зворотний проксі: він отримує запит від імені сервера . Він пересилає запит на сервер, отримує відповідь і потім повертає відповідь клієнту. У цьому випадку клієнт ніколи не «дізнається», хто був фактичним сервером (IP-адреса сервера) (за деякими винятками); це буде знати лише проксі. Сервер буде або не знає фактичного клієнта, залежно від конфігурації зворотного проксі.
Проксі-сервер проксі-сервера (і, можливо, кешує) вихідних мережевих запитів на різні не обов'язково пов’язані публічні ресурси через Інтернет. Зворотний проксі фіксує (і необов'язково кешує) вхідні запити з Інтернету та розподіляє їх на різні внутрішні приватні ресурси, як правило, для високої доступності.
У Cloudflare є чудова стаття із зображеннями, що пояснюють це детально.
Перевірте тут: Що таке зворотний проксі? | Пояснюються проксі-сервери
Проксі (Forward Proxy):
Коли комп'ютери у вашій локальній мережі підключаються до проксі-сервера, який має доступ до Інтернету. Переваги включають лише той сервер, який знаходиться в Інтернеті. Люди зовні не мають доступу до комп'ютерів безпосередньо. Проксі-сервери можуть покращити доступ до Інтернету для користувачів шляхом кешування завантажень. Вони також можуть бути використані для обмеження доступу до певних сайтів. Крім того, лише проксі-сервер потребує публічної адреси, а не клієнтів, що підключаються до нього.
Зворотний проксі:
Зворотний проксі - це протилежність прямому проксі. Натомість він діє як проксі від імені серверів, до яких підключено. Замість того, щоб безпосередньо звертатися до віддаленого сервера, користувач переходитиме через зворотний проксі-сервер і направляється звідти на відповідний сервер. Тільки зворотний проксі-сервер потребує сертифікату 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).
Ось приклад зворотного проксі (як балансира навантаження).
Клієнт переходить на сайт.com і сервер, на який він звертається, на ньому працює зворотний проксі. Зворотний проксі трапляється як фунт . Фунт приймає запит і відправляє його на один із трьох серверів додатків, що сидять за ним. У цьому прикладі фунт є балансиром навантаження. Тобто це врівноваження навантаження між трьома серверами додатків.
Сервери додатків подають вміст веб-сайту назад клієнту.
Якщо проксі немає
Для перегляду з боку клієнта та сервера однакові:
Клієнт -> Сервер
Проксі
З боку клієнта:
Клієнт -> проксі -> Сервер
З боку сервера:
Клієнт -> Сервер
Зворотний проксі
З боку клієнта:
Клієнт -> Сервер
З боку сервера:
Клієнт -> проксі -> Сервер
Тому я думаю, що якщо він встановлений користувачем клієнта is це називається проксі ;, якщо він встановлений менеджером сервера, це зворотний проксі.
Оскільки цілі та причини його налаштування різні, вони обробляють дані різними способами та використовують різні програми.
User side | Server side
client <-> proxy <--> reverse_proxy <-> real server
Дивлячись з точки зору користувача: під час надсилання запиту на проксі або зворотний проксі- сервер:
проксі - потрібні два аргументи :
1) що отримати і 2) який проксі-сервер використовувати проміжний
зворотний проксі - потрібен один аргумент :
1) що отримати
Зворотний проксі витягує вміст з іншого невідомого для користувача сервера і повертає результат так, як ніби він походить із зворотного проксі-сервера .
Більшість попередніх відповідей хороші, але, на мою думку, жодна не дуже близька до того, щоб достатньо добре відповідати "зворотній" якості, яка відрізняє їх. Для цього потрібно надати певний спосіб візуалізації "зворотного" характеру того, що є по суті одне і те ж (проксі-сервер), і це потрібно дати добре абстрагувати.
Проксі (неявно «вперед проксі») з'єднує кілька локальних клієнтів до будь-якого віддаленого сервера:
c--
|--p--s
c--
Зворотний проксі - сервер для з'єднання декількох локальних серверів в будь-який один віддалений клієнта (зверніть увагу , як макет реверс):
s--
|--p--c
s--
Справа в перспективі дійсно, а правильне розуміння концепції вимагає абстрагування несуттєвих (до конкретної концепції) деталей, хоча вони можуть бути дуже важливими, коли мова йде про прагматику роботи проксі-сервера. Такі деталі включають той факт, що в обох сценаріях реальність полягає в тому, що декілька клієнтів підключаються до декількох серверів, що клієнти та сервери можуть не бути локальними або віддаленими, де розташована хмара Інтернету або яка видимість існує між клієнтом і сервером.