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

Abkürzung für HTML DOCTYPE

Wenn Ihr DOCTYPE wie folgt ist: Code kopieren Der ...

Docker-Fallanalyse: Erstellen eines Redis-Dienstes

Inhaltsverzeichnis 1 Mount-Verzeichnisse und Date...

Optimierte Aufzeichnung der Verwendung von IN-Datenvolumen in Mysql

Die MySQL-Versionsnummer ist 5.7.28. Tabelle A ha...

So installieren Sie Jenkins mit Docker

Inhaltsverzeichnis 1. Ziehen Sie das Bild 2. Erst...

Warum sollte CSS im Head-Tag platziert werden?

Denken Sie darüber nach: Warum sollte css im head...

Lösung für Verbindungsfehler beim MySQL-Server 5.5

Die Lösung für das Problem, dass MySQL keine Verb...

Müssen Designer das Programmieren lernen?

Oftmals wird nach der Fertigstellung eines Webdes...

Mehrere Methoden zur Lösung des Problems des MySQL-Fuzzy-Abfrageindexfehlers

Wenn wir das Platzhalterzeichen „like %“ verwende...

Probleme mit Sperren in MySQL

Schlossklassifizierung: Aus der Granularität der ...

Grundlegendes Tutorial zum WeChat-Miniprogramm: Verwendung von Echart

Vorwort Schauen wir uns zunächst den Endeffekt an...

Detaillierter Installationsprozess und Prinzip des Vue-Routers

Inhaltsverzeichnis 1. Implementierungsprinzip des...