Was ist der Unterschied zwischen einem Proxyserver und einem Reverse-Proxyserver?
Was ist der Unterschied zwischen einem Proxyserver und einem Reverse-Proxyserver?
Antworten:
Die vorherigen Antworten waren korrekt, aber vielleicht zu knapp. Ich werde versuchen, einige Beispiele hinzuzufügen.
Zuallererst beschreibt das Wort "Proxy" jemanden oder etwas, das im Namen einer anderen Person handelt.
Im Computerbereich handelt es sich um einen Server, der im Auftrag eines anderen Computers handelt.
Aus Gründen der Barrierefreiheit beschränke ich meine Diskussion auf Web-Proxys. Die Idee eines Proxys ist jedoch nicht auf Websites beschränkt.
Die meisten Diskussionen über Web-Proxys beziehen sich auf den Proxy-Typ, der als "Forward-Proxy" bezeichnet wird.
Das Proxy-Ereignis besteht in diesem Fall darin, dass der "Forward-Proxy" im Auftrag des ursprünglichen Anforderers Daten von einer anderen Website abruft.
Als Beispiel werde ich drei Computer auflisten, die mit dem Internet verbunden sind.
Normalerweise würde man sich direkt von verbinden X --> Z.
In einigen Szenarien ist es jedoch besser, Y --> Z
im Namen von X
, welche Ketten wie folgt : X --> Y --> Z
.
Hier ist eine (sehr) unvollständige Liste der Verwendungen eines Forward-Proxy-Servers:
1) X kann nicht direkt auf Z zugreifen, weil
a) Jemand mit Verwaltungsbefugnis über X
die Internetverbindung hat beschlossen, den gesamten Zugriff auf die Website zu sperren Z
.
Beispiele:
Der Storm Worm-Virus verbreitet sich, indem er Personen zum Besuch verleitet. Daher familypostcards2008.com
hat der Systemadministrator den Zugriff auf die Site blockiert, um zu verhindern, dass Benutzer sich versehentlich selbst infizieren.
Die Mitarbeiter eines großen Unternehmens haben zu viel Zeit verschwendet facebook.com
, daher möchte das Management, dass der Zugriff während der Geschäftszeiten blockiert wird.
Eine örtliche Grundschule verbietet den Internetzugang zur playboy.com
Website.
Eine Regierung ist nicht in der Lage, die Veröffentlichung von Nachrichten zu kontrollieren. Daher kontrolliert sie stattdessen den Zugriff auf Nachrichten, indem sie Websites wie z wikipedia.org
. Siehe TOR oder FreeNet .
b) Der Administrator von Z
hat gesperrt X
.
Beispiele:
Der Administrator von Z hat Hacking-Versuche von X bemerkt, daher hat der Administrator beschlossen, die IP-Adresse (und / oder den Bereich) von X zu blockieren.
Z ist eine Forum-Website. X
spammt das Forum. Z blockiert X.
In diesem Beispiel werde ich drei Computer auflisten, die mit dem Internet verbunden sind.
Normalerweise würde man sich direkt von verbinden X --> Z.
In einigen Szenarien ist es für den Administrator jedoch besser Z
, den direkten Zugriff einzuschränken oder zu verbieten und Besucher zu zwingen, zuerst Y zu durchlaufen. Nach wie vor werden Daten von Y --> Z
im Auftrag von abgerufen X
, die wie folgt verkettet sind : X --> Y --> Z
.
Was sich diesmal von einem "Forward-Proxy" unterscheidet, ist, dass der Benutzer diesmal X
nicht weiß, auf was er zugreift Z
, da der Benutzer X
nur sieht, dass er mit ihm kommuniziert Y
. Der Server Z
ist für Clients unsichtbar und nur der Reverse-Proxy Y
ist extern sichtbar. Ein Reverse-Proxy erfordert keine (Proxy-) Konfiguration auf der Clientseite.
Der Kunde X
glaubt, nur mit Y
( X --> Y
) zu kommunizieren , aber die Realität ist, dass er die Y
gesamte Kommunikation ( X --> Y --> Z
erneut) weiterleitet .
In den oben genannten Szenarien Z
hat die Möglichkeit zu wählen Y
.
(X --> Y) --> Z
, rückwärts : X --> (Y --> Z)
.
Ein Paar einfacher Definitionen wäre:
Forward Proxy: Handeln im Namen eines Anforderers (oder Service-Verbrauchers)
Reverse Proxy: Handeln im Auftrag des Service- / Inhaltsproduzenten.
Ich fand das Diagramm unten sehr hilfreich. Es zeigt nur die Architektur eines vorwärts gegen Reverse - Proxy - Setup vom Client zum Server über das Internet. Dieses Bild hilft Ihnen, die Antwort von qyb2zm302 und andere Antworten besser zu verstehen .
Sie können auch beobachten dieses Video von F5 ‚s DevCentral von Peter Silva.
Bildquelle: Quora . Doch wie pro Martijn Pieters , dieses Bild könnte aus seiner Sicheren Gemeinschaft Pulse oder Julien Pauli- Website (auf Französisch) bei developpez.com.
Es erinnerte mich an das klassische Sprichwort:
Ein Bild sagt mehr als 1000 Worte.
Forward Proxy vs. Reverse Proxy (2012) erklärt den Unterschied zwischen Forward und Reverse Proxy sehr deutlich.
In der Antwort von qyb2zm302 werden die Anwendungen von Proxys ausführlich beschrieben, es wird jedoch auf das grundlegende Konzept zwischen Vorwärts- und Rückwärts-Proxys eingegangen. Für den Reverse-Proxy X → Y → Z kennt X Y und nicht Z und nicht umgekehrt.
Ein Proxy ist einfach ein Vermittler für die Kommunikation (Anfragen + Antworten). Client <-> Proxy <-> Server
Der Bevollmächtigte handelt im Namen des Kunden. Der Kunde kennt alle drei an der Kette beteiligten Maschinen. Der Server nicht.
Der Proxy handelt im Namen des Servers. Der Client kennt nur den Proxy. Der Server kennt die gesamte Kette.
Es scheint mir, dass Vorwärts und Rückwärts einfach verwirrende, perspektivabhängige Namen für Client und Server sind Proxy sind. Ich schlage vor, das erstere für das letztere aufzugeben, um explizit zu kommunizieren.
Um die Sache noch weiter zu verkomplizieren, ist natürlich nicht jede Maschine ausschließlich ein Client oder ein Server. Wenn der Kontext nicht eindeutig ist, geben Sie am besten explizit an, wo sich der Proxy befindet und welche Kommunikation er durchführt.
Einige Diagramme könnten helfen:
Proxy weiterleiten
Proxy umkehren
Der Unterschied liegt hauptsächlich in der Bereitstellung. Web-Forward- und Reverse-Proxys verfügen alle über dieselben zugrunde liegenden Funktionen. Sie akzeptieren Anforderungen für HTTP-Anforderungen in verschiedenen Formaten und geben eine Antwort, normalerweise durch Zugriff auf den Ursprungs- oder Kontaktserver.
Server mit vollem Funktionsumfang verfügen normalerweise über Zugriffskontrolle, Caching und einige Link-Mapping-Funktionen.
Ein Forward-Proxy ist ein Proxy, auf den durch Konfigurieren des Client-Computers zugegriffen wird. Der Client benötigt Protokollunterstützung für Proxy-Funktionen (Umleitung, Proxy-Authentifizierung usw.). Der Proxy ist für die Benutzererfahrung transparent, nicht jedoch für die Anwendung.
Ein Reverse-Proxy ist ein Proxy, der als Webserver bereitgestellt wird und sich wie ein Webserver verhält, mit der Ausnahme, dass er die Anforderung nicht lokal aus Programmen und Festplatten zusammensetzt, sondern an einen Ursprungsserver weiterleitet. Aus Client-Sicht handelt es sich um einen Webserver, sodass die Benutzererfahrung vollständig transparent ist.
Tatsächlich kann eine einzelne Proxy-Instanz gleichzeitig als Vorwärts- und Rückwärts-Proxy für verschiedene Client-Populationen ausgeführt werden.
Proxy: Die Anfrage wird im Namen des Kunden gestellt . Der Server gibt also die Antwort an den Proxy zurück und der Proxy leitet die Antwort an den Client weiter. Tatsächlich wird der Server niemals "erfahren", wer der Client war (die IP-Adresse des Clients). es wird nur den Proxy kennen. Der Client kennt den Server jedoch definitiv, da er im Wesentlichen die für den Server bestimmte HTTP-Anforderung formatiert, sie jedoch nur an den Proxy weitergibt.
Reverse Proxy: Es empfängt die Anfrage im Namen des Servers . Es leitet die Anforderung an den Server weiter, empfängt die Antwort und gibt die Antwort an den Client zurück. In diesem Fall "lernt" der Client nie, wer der tatsächliche Server war (die IP-Adresse des Servers) (mit einigen Ausnahmen). es wird nur den Proxy kennen. Der Server kennt oder wird den tatsächlichen Client nicht kennen, abhängig von den Konfigurationen des Reverse-Proxys.
Die beste Erklärung finden Sie hier mit Diagrammen:
Während ein Forward-Proxy im Namen von Clients ( oder anfordernden Hosts ) Proxys ist , wird ein Reverse-Proxy im Namen von Servern vertreten.
Während ein Forward-Proxy die Identitäten von Clients verbirgt, verbirgt ein Reverse-Proxy die Identitäten von Servern.
Ein Proxyserver überträgt (und speichert optional) ausgehende Netzwerkanforderungen an verschiedene nicht unbedingt verwandte öffentliche Ressourcen im Internet. Ein Reverse-Proxy erfasst (und speichert optional) eingehende Anforderungen aus dem Internet und verteilt sie an verschiedene interne private Ressourcen, normalerweise für Hochverfügbarkeitszwecke.
Cloudflare hat einen großartigen Artikel mit Bildern, die dies ausführlich erklären.
Überprüfen Sie hier: Was ist ein Reverse Proxy? | Proxyserver erklärt
Proxy (Forward-Proxy):
Wenn Computer in Ihrem LAN eine Verbindung zu einem Proxyserver herstellen, der auf das Internet zugreift. Zu den Vorteilen gehört, dass nur der Server dem Internet ausgesetzt ist. Außenstehende können nicht direkt auf die Computer zugreifen. Weiterleitungs-Proxys können den Internetzugang für Benutzer verbessern, indem sie Downloads zwischenspeichern. Sie können auch verwendet werden, um den Zugriff auf bestimmte Websites einzuschränken. Außerdem würde nur der Proxyserver eine öffentliche Adresse benötigen, nicht die Clients, die eine Verbindung zu ihm herstellen.
Reverse Proxy:
Ein Reverse-Proxy ist das Gegenteil eines Forward-Proxys. Stattdessen fungiert es als Proxy für die Server, mit denen eine Verbindung hergestellt wird. Anstatt direkt auf einen Remote-Server zuzugreifen, würde ein Benutzer den Reverse-Proxy durchlaufen und von dort zum entsprechenden Server geleitet werden. Nur der Reverse-Proxy würde ein SSL-Zertifikat benötigen, nur eine öffentliche IP-Adresse wäre erforderlich, und er kann den Lastausgleich eingehender Anforderungen verarbeiten, um die allgemeine Benutzererfahrung zu verbessern.
Bildquelle: Erstellen eines Weiterleitungsproxys mithilfe des Routings für Anwendungsanforderungen
Mein Verständnis aus Apache- Sicht ist, dass Proxy bedeutet, dass wenn Site x Proxies für Site y sind, Anfragen nach x y zurückgeben.
Der umgekehrte Proxy bedeutet, dass die Antwort von y so angepasst wird, dass alle Verweise auf y zu x werden.
Damit der Benutzer nicht erkennen kann, dass ein Proxy beteiligt ist ...
Nach meinem Verständnis ...
Wie jeder weiß, bedeutet Proxy zunächst "die Befugnis, jemand anderen zu vertreten". Jetzt gibt es zwei Dinge, Vorwärts- und Rückwärts-Proxy.
Angenommen, Sie möchten auf "Google" zugreifen, und "Google" verfügt wiederum über n Server, die auf diese bestimmte Anfrage antworten.
In diesem Fall verwenden Sie, während Sie etwas von Google anfordern und nicht möchten, dass Google Ihre IP-Adresse sieht, einen Forward-Proxy, wie unten erläutert.
A → B → C.
Jetzt sind Sie hier und senden eine Anfrage über B. C wird also denken, dass die Anfrage von B kommt, nicht von A. Auf diese Weise können Sie verhindern, dass die IP-Adresse Ihres Kunden nicht der Außenwelt ausgesetzt wird.
In diesem Fall nehmen wir zum besseren Verständnis den gleichen Fall von Forward Proxy. Hier haben Sie etwas an Google angefordert, das wiederum die eine Anfrage an den App-Server oder einen anderen Proxyserver sendet, um die Antwort zu erhalten. Diese Dinge werden also wie unten erklärt geschehen.
A → B → C.
C → D.
C ← D.
A ← B ← C.
Aus dem obigen Diagramm können Sie ersehen, dass eine Anfrage von B an C gesendet wurde, nicht von A. Dann wird von C eine Anfrage an D gesendet. In ähnlicher Weise wird die Antwort von D an C und dann an B und A gesendet.
Das obige Diagramm zeigt, dass nur der Kontext von Bedeutung ist, obwohl beide Proxys gleich handeln. Der clientseitige Proxy verbirgt jedoch die Clientinformationen, während der serverseitige Proxy die serverseitigen Informationen verbirgt.
Forward-Proxies gewähren dem Kunden Anonymität (dh denken Sie an Tor ).
Reverse-Proxys gewähren Back-End-Servern Anonymität (dh denken Sie an Server hinter einer DMZ).
Hier ist ein Beispiel für einen Reverse-Proxy (als Load Balancer).
Ein Client surft zu website.com und auf dem Server, auf den er trifft, wird ein Reverse-Proxy ausgeführt. Der Reverse-Proxy ist Pound . Pound nimmt die Anforderung entgegen und sendet sie an einen der drei dahinter liegenden Anwendungsserver. In diesem Beispiel ist Pound ein Load Balancer. Das heißt, es verteilt die Last zwischen drei Anwendungsservern.
Die Anwendungsserver stellen den Inhalt der Website dem Client zur Verfügung.
Wenn kein Proxy
Von der Client- und der Serverseite aus gesehen sind dieselben:
Client -> Server
Proxy
Von der Client-Seite:
Client -> Proxy -> Server
Von der Serverseite:
Client -> Server
Proxy umkehren
Von der Client-Seite:
Client -> Server
Von der Serverseite:
Client -> Proxy -> Server
Ich denke also, wenn es von einem Client-Benutzer eingerichtet wurde - es wird als Proxy bezeichnet -, wenn es von einem Server-Manager eingerichtet wurde, ist es ein Reverse-Proxy.
Da die Zwecke und Gründe für die Einrichtung unterschiedlich sind, werden Daten unterschiedlich behandelt und unterschiedliche Software verwendet.
User side | Server side
client <-> proxy <--> reverse_proxy <-> real server
Aus Sicht des Benutzers: Beim Senden einer Anfrage an einen Proxy- oder Reverse-Proxy- Server:
Proxy - erfordert zwei Argumente :
1) was zu bekommen ist und 2) welchen Proxy-Server ein Intermediate verwenden soll
Reverse Proxy - erfordert ein Argument :
1) was zu bekommen
Ein Reverse-Proxy ruft Inhalte von einem anderen Server ab, ohne dass der Benutzer dies weiß, und gibt das Ergebnis so zurück, als stamme es vom Reverse-Proxy-Server .
Die meisten der vorherigen Antworten sind gut, aber meiner Meinung nach kommt keine der "umgekehrten" Qualität, die die beiden unterscheidet, sehr nahe. Um dies zu tun, muss eine Möglichkeit zur Visualisierung der "umgekehrten" Natur dessen, was im Wesentlichen dasselbe ist (ein Proxy), gegeben werden, und es muss auf eine gut abstrahierte Weise gegeben werden.
Ein Proxy (implizit "Forward-Proxy") verbindet mehrere lokale Clients mit einem beliebigen Remote-Server:
c--
|--p--s
c--
Ein Reverse Proxy verbindet mehrere lokale Server mit einem Remote-Client (beachten Sie, wie sich das Layout umkehrt):
s--
|--p--c
s--
Es ist eine Frage der Perspektive, das Konzept wirklich und richtig zu verstehen, und erfordert, nicht wesentliche (für das jeweilige Konzept) Details zu abstrahieren, obwohl sie für die Pragmatik der Proxy-Operation sehr wichtig sein können. Zu diesen Details gehört die Tatsache, dass in beiden Szenarien mehrere Clients eine Verbindung zu mehreren Servern herstellen, dass Clients und Server möglicherweise nicht wirklich lokal oder remote sind, wo sich die Internet-Cloud befindet oder welche Art von Sichtbarkeit zwischen Client und Server besteht.