Detaillierte Erläuterung der Verwendung des Nginx-Reverse-Proxys zur Lösung domänenübergreifender Probleme

Detaillierte Erläuterung der Verwendung des Nginx-Reverse-Proxys zur Lösung domänenübergreifender Probleme

Frage

Im vorherigen Artikel zur domänenübergreifenden Ressourcenfreigabe wurde erwähnt, dass beim domänenübergreifenden Senden von Cookies Access-Control-Allow-Origin nicht auf * gesetzt werden kann und ein eindeutiger Domänenname angegeben werden muss, der mit der angeforderten Webseite übereinstimmt. Diese Art von Problem trat bei der Zusammenarbeit mit anderen während der Entwicklung dieses Projekts auf.

Lösung

  1. Im Allgemeinen können Sie CORS Cross-Domain Resource Sharing mit dem Backend verwenden, um Access-Control-Allow-Origin auf den Domänennamen zu setzen, auf den zugegriffen werden soll. Dies erfordert die Zusammenarbeit des Backends und wird von einigen Browsern nicht unterstützt.
  2. Basierend auf der Zusammenarbeit mit dem Backend des Partners wird der Nginx-Proxy verwendet, um die Homologierichtlinie des Browsers zu erfüllen und domänenübergreifende

Durchführung

Reverse-Proxy-Konzept

Bei der Reverse-Proxy-Methode wird ein Proxyserver verwendet, um Verbindungsanfragen im Internet anzunehmen. Anschließend werden die Anfragen an den Server im internen Netzwerk weitergeleitet. Die vom Server erhaltenen Ergebnisse werden dann an den Client zurückgegeben, der die Verbindung im Internet anfordert. Zu diesem Zeitpunkt erscheint der Proxyserver der Außenwelt als Server. Der Reverse-Proxy-Server erscheint dem Client wie der Originalserver und der Client muss keine spezielle Konfiguration durchführen. Der Client sendet eine normale Anforderung an den Inhalt im Namespace des Reverse-Proxys. Der Reverse-Proxy ermittelt dann, wohin die Anforderung weitergeleitet werden soll (zum ursprünglichen Server), und gibt den erhaltenen Inhalt an den Client zurück, als ob der Inhalt ursprünglich ihm gehört hätte.

Schritte zur domänenübergreifenden Implementierung mithilfe des Nginx-Reverse-Proxys

Gehen Sie zur offiziellen Nginx-Website, um das Paket herunterzuladen und die Nginx-Umgebung zu erstellen

Ändern Sie die Nginx-Konfigurationsdatei, suchen Sie die Datei ngixn.conf und ändern Sie die entsprechende Konfiguration

http {
 mime.types einschließen;
 Standardtyp Anwendung/Oktett-Stream;

 sendfile an;

 Server {
  listen 8000; #Hören Sie auf Port 8000, Sie können ihn auf andere Ports ändern server_name localhost; #Domänenname des aktuellen Dienststandorts /wili/api/ {
    proxy_pass http://chick.platform.deva.wili.us/api/; #Proxy-Konfiguration mit aufgezeichnetem Zugriffspfad als /will/api proxy_http_version 1.1 hinzufügen;
  }
  
  Standort / {
    Proxy-Passwort http://localhost:8001;
    Proxy_http_Version 1.1;
  }
  
  Fehlerseite 500 502 503 504 /50x.html;
  Standort = /50x.html {
   Stamm-HTML;
  }

 }

}

Konfigurationserklärung:

  • Aus den Konfigurationsinformationen können wir ersehen, dass wir nginx auf Port 8000 von localhost lauschen lassen und der Zugriff auf Website A und Website B über Port 8000 von localhost erfolgt.
  • Wir haben speziell einen Zugriff von „/will/api“ konfiguriert, sodass alle Adressen, die mit „will/api“ beginnen, zur Verarbeitung an „http://chick.platform.deva.wili.us/api/“ weitergeleitet werden.
  • Änderung der Zugriffsadresse

Nachdem wir nginx konfiguriert haben, müssen alle Zugriffe über nginx und nicht über die ursprüngliche Website-Adresse (Website A localhost:8001, Website B http://chick.platform.deva.wili.us/api/) erfolgen. Daher müssen wir die Anforderungsschnittstelle auf Website A in http://localhost:8000/wili/api/ ändern. Als nächstes starten Sie nginx und greifen auf den konfigurierten 8000 zu


Zu beachten ist, dass beim Starten von nginx Portkonflikte auftreten und Startfehler auftreten können. Sie können im Taskmanager überprüfen, ob der Start erfolgreich war.

Zusammenfassen

Es gibt viele Möglichkeiten, domänenübergreifende Browserprobleme zu lösen:

  1. jsonp erfordert die Zusammenarbeit des Zielservers mit einer Rückruffunktion
  2. CORS erfordert, dass der Server den Header setzt: Access-Control-Allow-Origin
  3. Die Nginx-Reverse-Proxy-Methode wird selten erwähnt, erfordert jedoch nicht die Zusammenarbeit des Zielservers. Sie müssen jedoch einen Transit-Nginx-Server erstellen, um Anforderungen weiterzuleiten. (Durch die Verwendung eines Reverse-Proxys kann der Zugriff auf Webseiten langsamer sein als zuvor.)

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:
  • Detaillierte Erläuterung der Konfiguration und Verwendung des Kartenmoduls im Nginx-Server
  • Verwenden des Map-Befehls von Nginx zum Umleiten von Seiten
  • So verwenden Sie Nginx, um den domänenübergreifenden Zugriff auf Cookies zu lösen
  • Nginx löst das Cross-Domain-Problem bei der Weiterleitung von Adressen
  • Vue-Verpackung verwendet Nginx-Proxy, um domänenübergreifende Probleme zu lösen
  • So verwenden Sie Nginx zum Lösen domänenübergreifender Probleme (am Beispiel von Flask)
  • So verwenden Sie eine Karte, um die domänenübergreifende Nutzung mehrerer Domänennamen in Nginx zu ermöglichen

<<:  Beispiel für die Implementierung der Wertübertragung zwischen WeChat-Miniprogrammseiten

>>:  So installieren und konfigurieren Sie MySQL und ändern das Root-Passwort

Artikel empfehlen

So überwachen Sie globale Variablen im WeChat-Applet

Ich bin kürzlich bei der Arbeit auf ein Problem g...

JavaScript fügt Prototyp-Methodenimplementierung für integrierte Objekte hinzu

Die Reihenfolge, in der Objekte Methoden aufrufen...

Detaillierte Analyse des React Diff-Prinzips

Inhaltsverzeichnis Diffing-Algorithmus Schicht-fü...

Erfahren Sie in zehn Minuten, wie Sie Microservices mit Docker bereitstellen

Seit seiner Veröffentlichung im Jahr 2013 wird Do...

Einführung in die Containerfunktion of() in der Linux-Kernel-Programmierung

Vorwort Bei der Linux-Kernel-Programmierung werde...

Detaillierte Erläuterung der Überwachung der NVIDIA GPU-Nutzung unter Linux

Bei der Verwendung von TensorFlow für Deep Learni...

Webdesign: Die genaue Platzierung und Verwendung massiver Materialien

Durch dreimaliges Auswendiglernen können Sie sich...

js+css zur Realisierung eines dreistufigen Navigationsmenüs

In diesem Artikelbeispiel wird der spezifische Co...

Wie implementiert MySQL ACID-Transaktionen?

Vorwort Kürzlich wurde ich in einem Interview gef...