Tomcat erhält den Clientdomänennamen des Nginx-Reverse-Proxys

Tomcat erhält den Clientdomänennamen des Nginx-Reverse-Proxys

Frage

Nach dem Nginx-Reverse-Proxy erhält die Tomcat-Anwendung den Nginx-Host über request.getHeader("host") und nicht den echten Domänennamen in der Adressleiste des Client-Browsers.

Beispielsweise lautet auf einem bestimmten Server die Portnummer von Tomcat 8080, die Portnummer von Nginx 80 und der Reverse-Proxy von Nginx ist Port 8080.

Server {
  hören Sie 80;
  Standort / {
    Proxy-Passwort http://127.0.0.1:8080;
  }
}

Öffnen Sie auf einem anderen Computer mit einem Browser http://haha/test um unter Tomcat auf die Anwendung zuzugreifen und den Clientdomänennamen abzurufen.

System.out.println(request.getHeader("host"));

sich herausstellen:

lokaler Host: 8080

Ursachen des Problems

Der Reverse-Proxy von Nginx ist eigentlich eine Brücke zwischen dem Client und dem echten Anwendungsserver. Der Client (normalerweise ein Browser) greift auf den Nginx-Server zu und Nginx greift dann auf den Webanwendungsserver zu. Für die Webanwendung ist der Client dieser HTTP-Anforderung Nginx und nicht der echte Client-Browser. Wenn keine spezielle Verarbeitung erfolgt, betrachtet die Webanwendung Nginx als Anforderungsclient und die erhaltenen Clientinformationen sind einige Informationen über Nginx.

Problemlösung

Nginx konfiguriert den HTTP-Header. Host enthält den tatsächlichen Domänennamen und die Portnummer des Clients

Proxy_set_header Host $http_host;

Tomcat erhält Client-Informationen aus dem von Nginx übergebenen HTTP-Header.

<Valve-Klassenname="org.apache.catalina.valves.RemoteIpValve" />

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Erläuterung der Schritte für Tomcat zur Unterstützung des https-Zugriffs
  • Erläuterung zur Optimierung der Tomcat+MySQL-Konfiguration mit hoher Parallelität
  • Erläuterung zur Verwendung und Änderung des Standard-Programmveröffentlichungspfads von Tomcat
  • Idea konfiguriert Maven-Tomcat-Plugin zur Implementierung der Projektbereitstellung
  • Detaillierte Erklärung der Serverpfadmethode zum Kompilieren von Maven-Projekten mit verschiedenen Tomcats in Intellij Idea
  • Detaillierte Schritte zum Importieren von Eclipse-Projekten in IDEA und zum Bereitstellen in Tomcat
  • Ausführliche Erklärung des Ereignismechanismus in Tomcat und Spring
  • Lösen Sie das Problem von Eclipse Tomcat OutOfMemoryError: PermGen-Speicherplatz
  • Spring Boot verwendet Thymeleaf + Gradle, um Krieg gegen Tomcat zu führen
  • Connector-Konfiguration in Tomcat

<<:  SQL-Methode zum Berechnen der Zeitstempeldifferenz

>>:  So umgehen Sie unbekannte Feldnamen in MySQL

Artikel empfehlen

Schritte zum Übertragen von Dateien und Ordnern zwischen zwei Linux-Servern

Heute habe ich mich mit der Migration eines Proje...

Hinweise zum erweiterten Zeichengerätetreiber des Linux-Kernel-Gerätetreibers

/****************** * Erweiterter Zeichengerätetr...

SQL IDENTITY_INSERT-Fallstudie

Wenn eine Spalte in einer Datentabelle einmal als...

So installieren und konfigurieren Sie Docker nginx

Laden Sie das Nginx-Image in Docker herunter Dock...

Grundlegende MySQL-Tabellenabfragen – häufige Fehler beim Left-Join

Überblick Bei kleinen und mittelgroßen Projekten ...

So stellen Sie ein Vue-Projekt unter Nginx bereit

Heute werde ich den Server nginx verwenden und mu...

So umbrechen Sie das HTML-Titelattribut

Als ich vor ein paar Tagen ein Programm schrieb, w...

Einige Tipps zur richtigen Verwendung des HTML-Titelattributs

Wenn Sie Inhalte vor Benutzern von Telefonen, Tabl...

Beispielcode für HTML-Layout links und rechts

CSS: Code kopieren Der Code lautet wie folgt: html...

MySQL-Tutorial versteht gespeicherte Prozeduren gründlich

Inhaltsverzeichnis 1. Konzepte im Zusammenhang mi...

MySQL NULL-Datenkonvertierungsmethode (unbedingt lesen)

Wenn Sie MySQL zum Abfragen der Datenbank verwend...