Jaka jest różnica między serwerem proxy a serwerem zwrotnego serwera proxy?
Jaka jest różnica między serwerem proxy a serwerem zwrotnego serwera proxy?
Odpowiedzi:
Poprzednie odpowiedzi były dokładne, ale być może zbyt zwięzłe. Spróbuję dodać kilka przykładów.
Przede wszystkim słowo „pełnomocnik” opisuje kogoś lub coś działającego w imieniu innej osoby.
W dziedzinie komputerów mówimy o jednym serwerze działającym w imieniu innego komputera.
Ze względu na dostępność ograniczę się do dyskusji na serwerach proxy - jednak idea proxy nie ogranicza się do stron internetowych.
Większość dyskusji na temat serwerów proxy internetowych dotyczy typu serwera proxy znanego jako „proxy proxy”.
W tym przypadku zdarzenie proxy polega na tym, że „forward proxy” pobiera dane z innej strony internetowej w imieniu pierwotnego requestera.
Na przykład wymienię trzy komputery podłączone do Internetu.
Zwykle łączy się bezpośrednio z X --> Z.
Jednak w niektórych sytuacjach lepiej jest Y --> Z
w imieniu X
, których łańcuchy w następujący sposób: X --> Y --> Z
.
Oto (bardzo) częściowa lista zastosowań przekazywania serwera proxy:
1) X nie może uzyskać bezpośredniego dostępu do Z, ponieważ
a) Osoba posiadająca uprawnienia administracyjne do X
połączenia internetowego postanowiła zablokować dostęp do strony Z
.
Przykłady:
Wirus Storm Worm rozprzestrzenia się, nakłaniając ludzi do odwiedzin familypostcards2008.com
, więc administrator systemu zablokował dostęp do witryny, aby zapobiec przypadkowemu zarażeniu się przez użytkowników.
Pracownicy dużej firmy tracą zbyt wiele czasu facebook.com
, więc zarząd chce zablokować dostęp w godzinach pracy.
Lokalna szkoła podstawowa zabrania dostępu do strony playboy.com
internetowej.
Rząd nie jest w stanie kontrolować publikowania wiadomości, więc zamiast tego kontroluje dostęp do wiadomości, blokując witryny takie jak wikipedia.org
. Zobacz TOR lub FreeNet .
b) Administrator Z
zablokował X
.
Przykłady:
Administrator Z zauważył próby włamania pochodzące od X, więc administrator postanowił zablokować adres IP X (i / lub netrange).
Z to strona internetowa forum. X
spamuje forum. Z bloków X.
W tym przykładzie wymienię trzy komputery podłączone do Internetu.
Zwykle łączy się bezpośrednio z X --> Z.
Jednak w niektórych scenariuszach administrator lepiej jest Z
ograniczyć lub zabronić bezpośredniego dostępu i zmusić odwiedzających do przejścia przez Y w pierwszej kolejności. Tak, jak poprzednio, mamy dane pobierane przez Y --> Z
w imieniu X
, których łańcuchy w następujący sposób: X --> Y --> Z
.
Tym razem różni się od „forward proxy”, że tym razem użytkownik X
nie wie, że uzyskuje dostęp Z
, ponieważ użytkownik X
widzi tylko to, z kim się komunikuje Y
. Serwer Z
jest niewidoczny dla klientów i tylko odwrotne proxy Y
jest widoczne z zewnątrz. Odwrotny serwer proxy nie wymaga konfiguracji (proxy) po stronie klienta.
Klient X
myśli, że komunikuje się tylko z Y
( X --> Y
), ale w rzeczywistości Y
przekazuje całą komunikację ( X --> Y --> Z
ponownie).
W powyższych scenariuszach Z
ma możliwość wyboru Y
.
(X --> Y) --> Z
odwrotnej: X --> (Y --> Z)
.
Para prostych definicji to:
Przekazywanie proxy: działanie w imieniu wnioskodawcy (lub usługobiorcy)
Odwrotny serwer proxy: działając w imieniu producenta usługi / treści.
Poniższy schemat okazał się bardzo pomocny. To po prostu pokazuje architekturę konfiguracji proxy do przodu i do tyłu z klienta na serwer przez Internet. Ten obraz pomoże ci lepiej zrozumieć odpowiedź qyb2zm302 i inne odpowiedzi.
Można również oglądać ten film z F5 „s DevCentral Peter Silva.
Źródło zdjęcia: Quora . Jednak, jak za Martijn Pieters , ten obraz może być z Pulse Bezpieczne Wspólnoty lub Julien Pauli miejsce (po francusku) na developpez.com.
Przypomniało mi to klasyczne przysłowie:
Obraz jest wart 1000 słów.
Forward Proxy vs. Reverse Proxy (2012) bardzo wyraźnie wyjaśnia różnicę między proxy a forwardem.
Odpowiedź qyb2zm302 ładnie szczegółowo opisuje zastosowania serwerów proxy, ale wymyka się podstawowej koncepcji między serwerami proxy do przodu i do tyłu. Dla odwrotnego proxy, X → Y → Z, X wie o Y, a nie Z, a nie odwrotnie.
Serwer proxy jest po prostu pośrednikiem w komunikacji (wnioski + odpowiedzi). Klient <-> Serwer proxy <-> Serwer
Serwer proxy działa w imieniu klienta. Klient wie o wszystkich trzech maszynach zaangażowanych w łańcuch. Serwer nie.
Serwer proxy działa w imieniu serwera. Klient wie tylko o proxy. Serwer zna cały łańcuch.
Wydaje mi się, że przekazywanie do przodu i do tyłu to po prostu mylące, zależne od perspektywy nazwy dla proxy klienta i serwera . Sugeruję porzucenie pierwszego dla drugiego, dla wyraźnej komunikacji.
Oczywiście, aby jeszcze bardziej skomplikować sprawę, nie każda maszyna jest wyłącznie klientem lub serwerem. Jeśli w kontekście występuje dwuznaczność, najlepiej jest wyraźnie określić, gdzie znajduje się serwer proxy i komunikację, którą tuneluje.
Niektóre diagramy mogą pomóc:
Przekaż proxy
Odwrotny serwer proxy
Różnica polega przede wszystkim na wdrożeniu. Wszystkie serwery proxy do przesyłania dalej i wstecz mają takie same funkcje podstawowe. Akceptują żądania HTTP w różnych formatach i udzielają odpowiedzi, zwykle uzyskując dostęp do serwera źródłowego lub kontaktowego.
W pełni funkcjonalne serwery zwykle mają kontrolę dostępu, buforowanie i niektóre funkcje mapowania łączy.
Przekazywany serwer proxy to serwer proxy, do którego dostęp uzyskuje się poprzez skonfigurowanie komputera klienckiego. Klient potrzebuje obsługi protokołu dla funkcji proxy (przekierowanie, uwierzytelnianie proxy itp.). Serwer proxy jest przezroczysty dla wygody użytkownika, ale nie dla aplikacji.
Odwrotny serwer proxy to serwer proxy, który jest wdrażany jako serwer WWW i zachowuje się jak serwer WWW, z tym wyjątkiem, że zamiast lokalnego komponowania treści z programów i dysku, przekazuje żądanie do serwera źródłowego. Z perspektywy klienta jest to serwer sieciowy, więc wrażenia użytkownika są całkowicie przejrzyste.
W rzeczywistości pojedyncza instancja proxy może działać jednocześnie jako proxy do przodu i do tyłu dla różnych populacji klientów.
Proxy: wysyła żądanie w imieniu klienta . Tak więc serwer zwróci odpowiedź do serwera proxy, a serwer proxy prześle odpowiedź do klienta. W rzeczywistości serwer nigdy nie „dowie się”, kim był klient (adres IP klienta); będzie znać tylko proxy. Jednak klient zdecydowanie zna serwer, ponieważ zasadniczo formatuje żądanie HTTP przeznaczone dla serwera, ale po prostu przekazuje je proxy.
Odwrotny serwer proxy: odbiera żądanie w imieniu serwera . Przekazuje żądanie do serwera, odbiera odpowiedź, a następnie zwraca odpowiedź klientowi. W takim przypadku klient nigdy nie „dowie się”, kto był rzeczywistym serwerem (adres IP serwera) (z pewnymi wyjątkami); będzie znać tylko proxy. Serwer będzie lub nie będzie znać rzeczywistego klienta, w zależności od konfiguracji zwrotnego proxy.
Serwer proxy proxy (i opcjonalnie buforuje) wychodzące żądania sieciowe do różnych niekoniecznie powiązanych zasobów publicznych w Internecie. Odwrotny serwer proxy przechwytuje (i opcjonalnie buforuje) przychodzące żądania z Internetu i dystrybuuje je do różnych wewnętrznych zasobów prywatnych, zwykle w celu zapewnienia wysokiej dostępności.
Cloudflare ma świetny artykuł ze zdjęciami szczegółowo wyjaśniającymi to.
Sprawdź tutaj: Co to jest odwrotny serwer proxy? | Serwery proxy wyjaśnione
Proxy (Forward Proxy):
Gdy komputery w sieci LAN łączą się z serwerem proxy, który uzyskuje dostęp do Internetu. Korzyści obejmują tylko serwer narażony na działanie Internetu. Ludzie z zewnątrz nie mają bezpośredniego dostępu do komputerów. Przekazywanie serwerów proxy może poprawić dostęp użytkowników do Internetu poprzez buforowanie pobranych plików. Można ich również użyć do ograniczenia dostępu do niektórych stron. Ponadto tylko serwer proxy potrzebuje adresu publicznego, a nie klientów łączących się z nim.
Odwrotny serwer proxy:
Odwrotny serwer proxy jest przeciwieństwem serwera proxy do przodu. Zamiast tego działa jako serwer proxy w imieniu podłączanych serwerów. Zamiast bezpośredniego dostępu do zdalnego serwera użytkownik przejdzie przez zwrotny serwer proxy i stamtąd zostanie skierowany do odpowiedniego serwera. Tylko zwrotny serwer proxy wymagałby certyfikatu SSL, potrzebny byłby tylko jeden publiczny adres IP i może on obsługiwać równoważenie obciążenia przychodzących żądań w celu zwiększenia ogólnej wygody użytkownika.
Źródło obrazu: Tworzenie przekazywania proxy za pomocą routingu żądań aplikacji
Z punktu widzenia Apache rozumiem, że proxy oznacza, że jeśli witryna x proxy dla witryny y, to żądania x zwracają y.
Odwrotny serwer proxy oznacza, że odpowiedź od y jest dostosowywana, tak że wszystkie odniesienia do y stają się x.
Aby użytkownik nie mógł powiedzieć, że jest zaangażowany serwer proxy ...
Zgodnie z moim zrozumieniem ...
Na początek, jak wszyscy wiedzą, proxy oznacza „uprawnienie do reprezentowania kogoś innego”. Teraz są dwie rzeczy: proxy i forward.
Załóżmy, że chcesz uzyskać dostęp do „Google”, a „Google” będzie miało n liczby serwerów, które odpowiedzą na to konkretne żądanie.
Teraz w tym przypadku, gdy prosisz o coś od Google i nie chcesz, aby Google widział Twój adres IP, będziesz używać przekazywania dalej, jak wyjaśniono poniżej.
A → B → C
Teraz jesteś A, wysyłając zapytanie przez B. Więc C pomyśli, że żądanie pochodzi od B, a nie A. W ten sposób możesz zapobiec, aby adres IP twoich klientów nie był narażony na świat zewnętrzny.
Teraz w tym przypadku, aby Cię zrozumieć, weźmiemy ten sam przypadek przekazywania dalej proxy. Tutaj poprosiłeś o coś do Google, który z kolei wyśle jedno żądanie do serwera aplikacji lub innego serwera proxy, aby uzyskać odpowiedź. Tak się stanie, jak wyjaśniono poniżej.
A → B → C
C → D
C ← D
A ← B ← C
Z powyższego schematu widać, że żądanie zostało wysłane do C z B, a nie z A. Następnie z C będzie jedno żądanie wysłane do D. Podobnie odpowiedź trafi do C z D, a następnie do B i A.
Powyższy diagram mówi, że liczy się tylko kontekst, chociaż oba serwery proxy działają w ten sam sposób, ale serwer proxy po stronie klienta ukrywa informacje o kliencie, podczas gdy serwer proxy po stronie ukrywa informacje po stronie serwera.
Przekazywanie proxy zapewnia anonimowość klienta (tj. Myślę Tor ).
Odwrotne proxy nadają anonimowość serwerom zaplecza (tj. Uważają serwery za DMZ).
Oto przykład odwrotnego proxy (jako modułu równoważenia obciążenia).
Klient surfuje po witrynie website.com, a serwer, na który trafia, ma działające na nim odwrotne proxy. Odwrotnym proxy jest Funt . Funt przyjmuje żądanie i wysyła je do jednego z trzech serwerów aplikacji za nim siedzących. W tym przykładzie funt jest modułem równoważącym obciążenie. Oznacza to równoważenie obciążenia między trzema serwerami aplikacji.
Serwery aplikacji podają treść strony internetowej z powrotem do klienta.
Jeśli nie ma proxy
Widok po stronie klienta i serwera jest taki sam:
Klient -> Serwer
Pełnomocnik
Po stronie klienta:
Klient -> proxy -> Serwer
Po stronie serwera:
Klient -> Serwer
Odwrotny serwer proxy
Po stronie klienta:
Klient -> Serwer
Po stronie serwera:
Klient -> proxy -> Serwer
Myślę więc, że jeśli jest skonfigurowany przez użytkownika klienta, to nazywa się proxy, jeśli jest skonfigurowany przez menedżera serwera, jest to odwrotne proxy.
Ponieważ cele i powody konfiguracji są różne, zajmują się danymi na różne sposoby i używają innego oprogramowania.
User side | Server side
client <-> proxy <--> reverse_proxy <-> real server
Patrząc z perspektywy użytkownika: wysyłając zapytanie do serwera proxy lub odwrotnego serwera proxy :
proxy - wymaga dwóch argumentów :
1) co uzyskać i 2) który serwer proxy ma korzystać z pośrednika
zwrotny serwer proxy - wymaga jednego argumentu :
1) co uzyskać
Odwrotny serwer proxy pobiera zawartość z innego serwera bez wiedzy użytkownika i zwraca wynik tak, jakby pochodził z serwera odwrotnego serwera proxy .
Większość wcześniejszych odpowiedzi jest dobra, ale moim zdaniem żadna z nich nie jest wystarczająco blisko do rozwiązania wystarczająco „odwrotnej” jakości, która różnicuje te dwie cechy. Aby to zrobić, należy podać jakiś sposób wizualizacji „odwrotnej” natury tego, co jest zasadniczo tym samym (proxy), i należy go podać w sposób abstrakcyjny.
Proxy (domyślnie „forward proxy”) łączy wielu klientów lokalnych na danym serwerze zdalnym:
c--
|--p--s
c--
Reverse proxy łączy wiele serwerów lokalnych któregokolwiek zdalnego klienta (Zauważ, że odwraca layout):
s--
|--p--c
s--
Jest to kwestia perspektywy naprawdę i właściwe zrozumienie pojęcia wymaga wyodrębnienia nieistotnych (dla konkretnej koncepcji) szczegółów, chociaż mogą one być bardzo ważne, jeśli chodzi o pragmatykę działania proxy. Takie szczegóły obejmują fakt, że w obu scenariuszach rzeczywistość jest taka, że wielu klientów łączy się z wieloma serwerami, że klienci i serwery mogą tak naprawdę nie być lokalni lub zdalni, gdzie znajduje się chmura internetowa lub jaki jest rodzaj widoczności między klientem a serwerem.