web-dev-qa-db-de.com

Was ist der Unterschied zwischen Proxy-Server und Reverse-Proxy-Server?

Was ist der Unterschied zwischen einem Proxy-Server und einem Reverse-Proxy-Server?

1700
Vicky

Die vorherigen Antworten waren zutreffend, aber vielleicht zu knapp. Ich werde versuchen, einige Beispiele hinzuzufügen.

Zunächst beschreibt das Wort "Proxy" jemanden oder etwas, das im Auftrag eines anderen 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.

FORWARD-Proxy

Die meisten Diskussionen über Web-Proxys beziehen sich auf den Proxy-Typ, der als "Forward-Proxy" bezeichnet wird.

Das Proxy-Ereignis ist in diesem Fall, dass der "Weiterleitungs-Proxy" im Namen des ursprünglichen Empfängers Daten von einer anderen Website abruft.

Eine Geschichte von 3 Computern (Teil I)

Als Beispiel liste ich drei Computer auf, die mit dem Internet verbunden sind.

  • X = Ihr Computer oder "Client" -Computer im Internet
  • Y = die Proxy-Website, proxy.example.org
  • Z = die Website, die Sie besuchen möchten, www.example.net

Normalerweise würde man sich direkt von X --> Z. verbinden

In einigen Szenarien ist es jedoch besser, Y --> Z im Namen von X zu verwenden, das wie folgt verkettet wird: X --> Y --> Z.

Gründe, warum X einen Forward-Proxy-Server verwenden möchte:

Hier ist eine (sehr) unvollständige Liste der Verwendungszwecke eines Forward-Proxy-Servers.

  • 1) X kann nicht direkt auf Z zugreifen, weil

    • a) Jemand, der über Administratorrechte für die Internetverbindung von X verfügt, hat beschlossen, den gesamten Zugriff auf die Site Z zu sperren.

      • Beispiele:

        • Der Sturmwurm-Virus breitet sich aus, indem er Benutzer dazu verleitet, familypostcards2008.com zu besuchen. Der Systemadministrator hat 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 mit facebook.com verschwendet. Daher möchte das Management, dass der Zugriff während der Geschäftszeiten gesperrt wird.

        • Eine örtliche Grundschule verbietet den Internetzugang zur Website playboy.com.

        • Eine Regierung ist nicht in der Lage, die Veröffentlichung von Nachrichten zu kontrollieren. Sie kontrolliert stattdessen den Zugriff auf Nachrichten, indem sie Websites wie wikipedia.org blockiert. Siehe TOR oder FreeNet .

    • b) Der Administrator von Z hat X gesperrt.

      • Beispiele:

        • Der Administrator von Z hat Hacking-Versuche von X bemerkt, daher hat der Administrator beschlossen, die IP-Adresse von X (und/oder einen anderen Bereich) zu blockieren.

        • Z ist eine Forum-Website. X spammt das Forum. Z blockiert X.

REVERSE-Proxy

Eine Geschichte von 3 Computern (Teil II)

In diesem Beispiel werde ich drei Computer auflisten, die mit dem Internet verbunden sind.

  • X = Ihr Computer oder "Client" -Computer im Internet
  • Y = die Reverse-Proxy-Website, proxy.example.com
  • Z = die Website, die Sie besuchen möchten, www.example.net

Normalerweise würde man sich direkt von X --> Z. verbinden

In einigen Szenarien ist es jedoch besser, wenn der Administrator von Z den direkten Zugriff einschränkt oder nicht zulässt und die Besucher dazu zwingt, zuerst Y zu durchlaufen. Nach wie vor werden also Daten von Y --> Z im Auftrag von X abgerufen, was wie folgt verkettet wird: X --> Y --> Z.

Diesmal unterscheidet sich der Benutzer X von einem "Forward-Proxy" darin, dass er diesmal nicht weiß, dass er auf Z zugreift, da der Benutzer X nur sieht, dass er gerade 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 Client X denkt, er kommuniziert nur mit Y (X --> Y), aber die Realität ist, dass Y die gesamte Kommunikation weiterleitet (X --> Y --> Z erneut).

Gründe, warum Z einen Reverse-Proxy-Server einrichten möchte:

  • 1) Z möchte, dass der gesamte Datenverkehr auf seiner Website zuerst über Y geleitet wird.
    • a) Z hat eine große Website, die Millionen von Menschen sehen möchten, aber ein einziger Webserver kann nicht den gesamten Datenverkehr verarbeiten. Daher richtet Z viele Server ein und stellt einen Reverse-Proxy im Internet bereit, der Benutzer zu dem Server weiterleitet, der ihnen am nächsten ist, wenn sie versuchen, Z zu besuchen. Dies ist ein Teil der Funktionsweise des Content Distribution Network (CDN).
  • 2) Der Administrator von Z ist besorgt über Vergeltungsmaßnahmen für auf dem Server gehostete Inhalte und möchte den Hauptserver nicht direkt der Öffentlichkeit zugänglich machen.
    • a) Eigentümer von Spam-Marken wie "Canadian Pharmacy" scheinen Tausende von Servern zu haben, während in Wirklichkeit die meisten Websites auf weit weniger Servern gehostet werden. Darüber hinaus werden durch Missbrauchsbeschwerden über den Spam nur die öffentlichen Server heruntergefahren, nicht der Hauptserver.

In den obigen Szenarien kann ZY auswählen.

Links zu Themen aus dem Beitrag:

Content Delivery Network

forward-Proxy-Software (serverseitig)

reverse-Proxy-Software für HTTP (serverseitig)

reverse-Proxy-Software für TCP (serverseitig)

siehe auch:

2869
qyb2zm302

Ein paar einfache Definitionen wären

Forward Proxy: Im Namen eines Anforderers (oder Service-Verbrauchers) handeln

Reverse Proxy: Handelt im Auftrag des Service-/Content-Produzenten.

513

Ich fand dieses Diagramm sehr hilfreich. Es zeigt nur die Architektur eines Proxy-Setups forward vs reverse vom Client zum Server über das Internet. Dieses Bild wird Ihnen helfen, qyb2zm302's post und andere Posts besser zu verstehen.

Forward Proxy vs Reverse Proxy

Sie können auch this Video von F5 's DevCentral von Peter Silva ansehen.

Bildquelle: Quora . Alle Kredite an die Person, die dieses Diagramm erstellt hat.

Es erinnerte mich an das klassische Sprichwort:

Ein Bild sagt mehr als 1000 Worte.

356
Nishant

in der Antwort von qyb2zm302 werden die Anwendungen von Proxys detailliert beschrieben, es wird jedoch auf das grundlegende Konzept zwischen Forward- und Reverse-Proxys eingegangen. Für den Reverse-Proxy X -> Y -> Z kennt X Y und nicht Z, und nicht umgekehrt.

http://www.jscape.com/blog/bid/87783/Forward-Proxy-vs-Reverse-Proxy erklärt den Unterschied zwischen Forward- und Reverse-Proxys sehr deutlich.

Ein Proxy ist lediglich ein Vermittler für die Kommunikation (Anfragen + Antworten). Client <-> Proxy <-> Server

  • Client-Proxy: ( Client <-> Proxy ) <-> Server

    Der Stimmrechtsvertreter handelt im Namen des Kunden. Der Kunde kennt alle 3 an der Kette beteiligten Maschinen. Server nicht.

  • Server-Proxy: Client <-> ( Proxy <-> Server )

    Der Proxy handelt im Namen des Servers. Der Kunde kennt sich nur mit Proxy aus. Server kennt ganze Kette.

Scheint mir, dass vorwärts und rückwärts einfach verwirrende, perspektivabhängige Namen für Client sind und Server Proxy. Ich schlage vor, erstere für letztere aufzugeben, um eine explizite Kommunikation zu ermöglichen.

Um die Sache noch weiter zu komplizieren, 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 und die von ihm getunnelten Kommunikationen befinden.

210
Protongun

Einige Diagramme könnten helfen:

Forward Proxy

Forward proxy

Reverse Proxy

Reverse proxy

128

Der Unterschied liegt hauptsächlich in der Bereitstellung. Web Forward- und Reverse-Proxys haben alle die gleichen zugrunde liegenden Funktionen. Sie akzeptieren Anfragen nach HTTP-Anfragen in verschiedenen Formaten und liefern eine Antwort, in der Regel durch Zugriff auf den Origin- oder Kontaktserver.

Voll ausgestattete Server verfügen normalerweise über Zugriffssteuerung, Caching und einige Link-Mapping-Funktionen.

Ein Forward-Proxy ist ein Proxy, auf den durch Konfigurieren des Clientcomputers zugegriffen wird. Der Client benötigt Protokollunterstützung für Proxy-Funktionen (Umleitung, Proxy-Authentifizierung usw.). Der Proxy ist für die Benutzererfahrung transparent, jedoch nicht 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 Datenträgern zusammensetzt, sondern an einen Origin-Server weiterleitet. Aus Client-Sicht ist es IS ein Webserver, sodass die Benutzererfahrung vollständig transparent ist.

Tatsächlich kann eine einzelne Proxy-Instanz gleichzeitig als Forward- und Reverse-Proxy für verschiedene Client-Populationen ausgeführt werden.

Das ist die Kurzfassung, ich kann klarstellen, ob die Leute etwas kommentieren wollen.

70
benc

Proxy: Er stellt die Anfrage im Namen des Kunden . Der Server sendet also die Antwort an den Proxy und der Proxy leitet die Antwort an den Client weiter. Tatsächlich "erfährt" der Server nie, wer der Client war (Client-IP), sondern kennt nur den Proxy. Der Client kennt den Server jedoch definitiv, da er die für den Server bestimmte HTTP-Anforderung im Wesentlichen formatiert, sie jedoch nur an den Proxy weitergibt.

enter image description here

Reverse Proxy: Er empfängt die Anfrage im Namen des Servers . Es leitet die Anforderung an den Server weiter, empfängt die Antwort und sendet die Antwort an den Client zurück. In diesem Fall "erfährt" der Client nie, wer der tatsächliche Server war (Server-IP) (mit einigen Ausnahmen), er kennt nur den Proxy. Der Server wird den tatsächlichen Client abhängig von den Konfigurationen des Reverse-Proxys kennen oder nicht kennen.

enter image description here

59
Dimos

Beste Erklärung hier mit Diagrammen:

Während ein Forward-Proxy Proxys im Namen von Clients ( oder anfordernde Hosts ) , ein Reverse Proxy Proxies im Namen von Servern.

Während ein Forward-Proxy die Identitäten von Clients verbirgt, ist ein Reverse Proxy verbirgt die Identitäten von Servern.

39
Farhan

Ein Proxyserver überträgt (und speichert optional) ausgehende Netzwerkanforderungen an verschiedene nicht notwendigerweise verwandte öffentliche Ressourcen über das 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 detailliert erklären.

Überprüfen Sie hier: https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/

enter image description here


enter image description here

27
Nakamoto

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. Externe Personen können nicht direkt auf die Computer zugreifen. Forward-Proxys können den Internetzugang für Benutzer verbessern, indem Downloads zwischengespeichert werden. 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 herstellen.

Reverse Proxy: Ein Reverse Proxy ist das Gegenteil eines Forward Proxy. Stattdessen fungiert es als Proxy für die Server, mit denen eine Verbindung hergestellt wird. Anstatt direkt auf einen Remote-Server zuzugreifen, wird ein Benutzer über den Reverse-Proxy zum entsprechenden Server weitergeleitet. Nur der Reverse-Proxy würde ein SSL-Zertifikat benötigen, nur eine öffentliche IP-Adresse würde benötigt und er kann den Lastenausgleich eingehender Anforderungen durchführen, um die allgemeine Benutzererfahrung zu verbessern.

enter image description here Bildquelle: docs.Microsoft.com

25
JSON C11

Ein gewöhnlicher Forward-Proxy ist ein Zwischenserver, der sich zwischen dem Client und dem Origin-Server befindet. Um Inhalte vom Origin-Server abzurufen, sendet der Client eine Anfrage an den Proxy, wobei der Origin-Server als Ziel angegeben wird, und der Proxy fordert dann den Inhalt vom Origin-Server an und sendet ihn an den Client zurück. Der Client muss speziell für die Verwendung des Forward-Proxys für den Zugriff auf andere Sites konfiguriert sein.

Ein Reverse Proxy (oder Gateway) erscheint dem Client dagegen wie ein gewöhnliches Web Server. Es ist keine spezielle Konfiguration auf dem Client erforderlich. Der Client stellt normale Inhaltsanforderungen im Namensraum des Reverse-Proxys. Der Reverse-Proxy entscheidet dann, wohin diese Anforderungen gesendet werden, und gibt den Inhalt zurück, als wäre er selbst der Ursprung.

Eine typische Verwendung eines Reverse-Proxys besteht darin, Internetbenutzern Zugriff auf einen Server zu gewähren, der sich hinter einer Firewall befindet. Reverse-Proxys können auch zum Lastenausgleich verwendet werden mehrere Back-End-Server oder zum Zwischenspeichern eines langsameren Back-End-Servers. Darüber hinaus können mit Reverse-Proxys einfach mehrere Server in den gleichen URL-Bereich gebracht werden.

weitere Informationen finden Sie unter: Apache Docs

24
ironman_ma

Dies ist eine gute Lektüre, um die Unterschiede zwischen einem Forward- und einem Reverse-PROXY zu verstehen http://www.jscape.com/blog/bid/87783/Forward-Proxy-vs-Reverse-Proxy

Ein Forward-Proxy verbirgt die Identitäten der Clients (Benutzer), während ein Reverse-Proxy die Identitäten Ihrer Server verbirgt.

19
Bonnie Varghese

Obwohl ich aus Apache-Sicht verstehe, dass Proxy bedeutet, dass, wenn Site x für Site y Proxy ist, Anforderungen für x y zurückgeben.

Der Reverse 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 es sich um einen Proxy handelt ...

11
Chris Kimpton

Nach meinem Verständnis ..........

Wie jeder weiß, bedeutet Proxy zunächst "Die Befugnis, jemanden anders zu vertreten". Nun gibt es zwei Möglichkeiten: Forward und Reverse Proxy.

FORWARD PROXY Angenommen, Sie möchten auf "google" zugreifen, und "google" verfügt über n Server, die auf diese bestimmte Anfrage antworten.

In diesem Fall verwenden Sie, während Sie bei Google eine Anfrage stellen und Google Ihre IP-Adresse nicht sehen soll, einen Forward-Proxy, wie unten erläutert.

A -----> B -----> C

Hier sind Sie A und senden eine Anfrage über B, daher wird C denken, dass die Anfrage von B und nicht von A kommt. Auf diese Weise können Sie verhindern, dass die IP-Adresse Ihres Clients der Außenwelt ausgesetzt wird.

REVERSE PROXY. In diesem Fall nehmen wir zum besseren Verständnis den gleichen Fall von Forward-Proxy an. Hier haben Sie etwas zum googeln angefordert, das wiederum die eine Anfrage an den App-Server oder einen anderen Proxy-Server sendet, um die Antwort zu erhalten. Also werden diese Dinge passieren, wie unten erklärt.

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 und nicht von A gesendet wurde. Von C aus wird dann eine Anfrage an D gesendet Die Antwort geht von D zu C und dann zu B und A.

Das obige Diagramm zeigt, dass nur der Kontext von Bedeutung ist, obwohl beide Proxys auf die gleiche Weise agieren, der clientseitige Proxy jedoch Clientinformationen verbirgt, während der serverseitige Proxy serverseitige Informationen verbirgt.

Bitte kommentieren Sie, wenn Sie der Meinung sind, dass die obige Erklärung falsch ist.

10
Sourabh Sharma

Weiterleiten von Proxies Gewähren Sie dem Kunden Anonymität (d. H. Denken Sie an Tor).

Reverse-Proxies Gewähren Sie den Back-End-Servern Anonymität (d. H. Denken Sie an Server hinter einer DMZ).

10
8bitjunkie

Hier ist ein Beispiel für einen Reverse Proxy (als Load Balancer).

Ein Client surft zu website.com und auf dem Server, auf dem er sich befindet, wird ein Reverse-Proxy ausgeführt. Der Reverse-Proxy ist Pfund . Pound nimmt die Anfrage entgegen und sendet sie an einen der drei dahinter stehenden Anwendungsserver. In diesem Beispiel ist Pound ein Load Balancer. dh Es verteilt die Last zwischen drei Anwendungsservern. Die Anwendungsserver stellen den Inhalt der Website wieder dem Client zur Verfügung.

9
ae.

Forward Proxy dient sers: Hilfe sers Zugriff auf Server.

Reverse Proxy dient Server: schützt Server vor Benutzer.

5
HoangYell

wenn kein Proxyto see from client side and server side are the same: Client -> ServerProxyfrom client side: Client -> proxy -> Server from Server side: Client -> ServerReverse Proxyfrom client side: Client -> Server from Server side: Client -> proxy -> Server

Also ich denke, wenn es vom Client-Benutzer eingerichtet wird, heißt es Proxy, wenn es vom Server-Manager eingerichtet wird, ist es Reverse-Proxy.

Da die Zwecke und Gründe für die Einrichtung unterschiedlich sind, gehen sie unterschiedlich mit Daten um und verwenden unterschiedliche Software.

   User side          |      Server side
client  <->  proxy  <-->  reverse_proxy <-> real server
4
tinyhare

Aus Sicht des Benutzers: Beim Senden einer Anfrage an einen Proxy oder Reverse Proxy Server:

  • Proxy - erfordert zwei Argumente:

    1) was zu bekommen und 2) welcher Proxy-Server ein Zwischenprodukt verwenden soll

  • Reverse Proxy - erfordert ein Argument:

    1) was zu bekommen

    reverse-Proxy holt den Inhalt von einem anderen Server, ohne es dem Benutzer zu merken, und gibt das Ergebnis zurück, als ob es vom Reverse-Proxy-Server stamme

2
pspi

Die meisten der oben genannten Antworten sind gut, aber meiner Meinung nach kommt keiner der "umgekehrten" Qualität, die die beiden voneinander unterscheidet, sehr nahe. Um dies zu erreichen, muss auf eine Art und Weise die "umgekehrte" Natur dessen sichtbar gemacht werden, was im Wesentlichen dasselbe ist (ein Proxy) und es muss auf eine gut abstrahierte Weise gegeben werden.

Ein Proxy (implizit "Weiterleitungs-Proxy") verbindet mehrere lokale Clients mit einem beliebigen Remote-Server:

c--
   |--p--s
c-- 

Ein Reverse Proxy verbindet mehrere lokale Server mit einem beliebigen Remote-Client (beachten Sie, wie das Layout umgekehrt wird):

s--
   |--p--c
s--

Es ist eine Frage der Perspektive, ob das Konzept wirklich und richtig verstanden wird, und obgleich es für die Pragmatik des Proxy-Betriebs sehr wichtig sein kann, unwesentliche (für das jeweilige Konzept) Details zu abstrahieren. 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 lokal oder remote sind, sich die Internet-Cloud befindet oder welche Sichtbarkeit zwischen Client und Server besteht.

1
Alex Fotios

Eine typische Verwendung eines Forward-Proxys ist die Bereitstellung des Internets Zugriff auf interne Clients, die ansonsten durch eine Firewall eingeschränkt sind. Der Forward-Proxy kann auch Caching verwenden (wie von mod_cache bereitgestellt), um die Netzwerknutzung zu reduzieren.

0
KouchakYazdi