Unterschied und Prinzipanalyse des Nginx-Forward- und Reverse-Proxy

Unterschied und Prinzipanalyse des Nginx-Forward- und Reverse-Proxy

1. Der Unterschied zwischen Forward-Proxy und Reverse-Proxy

Ein Forwardproxy fungiert als Proxy für den Client und ein Reverseproxy fungiert als Proxy für den Server.

1.1 Weiterleitungsproxy

Zwischen Client und Server befindet sich ein Forward-Proxy-Server. Um Daten vom Server abzurufen, sendet der Client eine Anfrage an den Proxy-Server und gibt dabei den Zielserver an. Anschließend leitet der Proxy-Server die vom Zielserver zurückgegebenen Daten an den Client weiter. Hier muss der Client einige Forward-Proxy-Einstellungen vornehmen.

Beispiel: Die Wand hochklettern

Bei einem Forward-Proxy wird die Anfrage des Clients weitergeleitet

1.2 Reverse-Proxy

Beim Reverse-Proxy ist sich der Client des Proxys nicht bewusst und kann ohne Konfiguration darauf zugreifen. Der Client sendet die Anforderung an den Reverse-Proxy-Server, der den Zielserver zum Abrufen der Daten auswählt und diese dann an den Client zurücksendet. Zu diesem Zeitpunkt sind der Reverse-Proxy-Server und der Zielserver für die Außenwelt ein Server. Offengelegt wird nur die Adresse des Proxy-Servers, die tatsächliche IP-Adresse des Servers ist verborgen.

2. Verwendung des Nginx-Reverse-Proxys

Erstellen Sie eine neue virtuelle Hostkonfiguration in der Nginx-Konfigurationsdatei nginx.conf.

Server {
    hören Sie 8080;
    Servername localhost;
    
    Standort /Kategorie/ {
      Proxy-Passwort http://localhost;
    }
  }

In der obigen Konfiguration

„listen“ gibt den Port an, auf dem nginx lauscht;

Servername ist der Domänenname, der beim Zugriff auf Nginx im Browser eingegeben wird. Sie können die IP-Adresse direkt eingeben. Wenn Sie mehrere binden möchten, können Sie sie durch Leerzeichen trennen.

location gibt die abzugleichende URL an, wenn nginx den Port abhört. Wenn die auf nginx zugreifende URL /category/ enthält, wird der Proxy ausgeführt.

proxy_pass gibt das Ziel an, an das Nginx die Anforderung des Clients weiterleitet.

Beachten Sie hier die Pfadangabe von proxy_pass. Wenn der Pfad wie oben ohne / endet, handelt es sich um einen relativen Pfad. Dann wird nginx beim Weiterleiten der Anfrage /category/ in der ursprünglichen URL nicht abfangen. Wenn der Browser beispielsweise auf http://localhost:8080/category/findAll zugreift, lautet die von nginx tatsächlich gesendete Anfrageadresse http://localhost/category/findAll.

Wenn der Zielpfad von proxy_pass mit einem / am Ende konfiguriert ist, was einen absoluten Pfad angibt, fängt nginx beim Weiterleiten der Anforderung /category/ in der ursprünglichen URL ab. Wenn der Browser beispielsweise auf http://localhost:8080/category/findAll zugreift, lautet die von nginx tatsächlich gesendete Anforderungsadresse http://localhost/findAll.

Bei der Konfiguration müssen Sie entsprechend Ihren Anforderungen entscheiden, ob / einbezogen werden soll. Andernfalls meldet Nginx bei der tatsächlichen Verwendung immer einen 404-Fehler.

Meine Konfiguration hier enthält /category in meinem Backend-Schnittstellenpfad, also verwende ich einen relativen Pfad und behalte diesen bei.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Verwenden des Nginx-Forward-Proxys zur Implementierung einer Analyse des Intranet-Domänennamen-Weiterleitungsprozesses
  • Diagramm des Prozesses zur Implementierung eines Richtungsproxys durch Nginx
  • Detaillierte Erläuterung des Nginx-Forward-Proxys und des Reverse-Proxys
  • Eine universelle Nginx-Schnittstelle zur Implementierung der Reverse-Proxy-Konfiguration
  • Interviewfragen zu Forwardproxy und Reverseproxy in verteilter Architektur

<<:  js realisiert horizontale und vertikale Slider

>>:  Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.18

Artikel empfehlen

Fünf Verzögerungsmethoden für die MySQL-Zeitblindinjektion

Fünf Verzögerungsmethoden für die MySQL-Zeitblind...

Online- und Offlineinstallation von Docker und allgemeine Befehlsvorgänge

1. Testumgebung Name Version centos 7.6 Docker 18...

Verwenden Sie reines CSS, um einen Switch-Effekt zu erzielen

Zuerst ist die Idee Um diesen Effekt zu erzielen,...

MySQL InnoDB-Überwachung (Systemebene, Datenbankebene)

MySQL InnoDB-Überwachung (Systemebene, Datenbanke...

So lösen Sie das Problem, dass Seata die MySQL 8-Version nicht verwenden kann

Mögliche Gründe: Der Hauptgrund, warum Seata MySQ...

Linux löscht automatisch Protokolle und Beispielbefehle von vor n Tagen

1. Befehl zum Löschen von Dateien: Suche das ents...

Ein paar Dinge zu favicon.ico (am besten im Stammverzeichnis ablegen)

Öffnen Sie eine beliebige Webseite, zum Beispiel ...

Ein Designer beschwert sich erneut über die offizielle Website von Hammer

Letztes Jahr war der offene Brief ein großer Erfo...

Detaillierte Erläuterung der Redis-Master-Slave-Replikationspraxis mit Docker

Inhaltsverzeichnis 1. Hintergrund 2. Bedienungssc...

CSS-Float-Eigenschaftsdiagramm, Details der Float-Eigenschaft

Die korrekte Verwendung der CSS-Float-Eigenschaft...