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

Lösung für das Problem, dass HTML2-Canvas-SVG nicht erkannt wird

Es gibt eine neue Funktion, die das Erfassen eine...

Beispiel für die Implementierung eines Skeleton-Bildschirms mit Vue

Inhaltsverzeichnis Verwendung des Skelettbildschi...

Mehr als 100 Zeilen Code zur Implementierung von React Drag Hooks

Vorwort Der Quellcode umfasst insgesamt nur mehr ...

Grundprinzipien für die Zusammenstellung einer Website-Homepage

1. Die Organisationsstruktur des Hypertext-Dokumen...

Vue Learning - Grundlagen des VueRouter-Routings

Inhaltsverzeichnis 1. VueRouter 1. Beschreibung 2...

Tutorial zur Installation und Konfiguration von msmtp und mutt für Raspberry Pi

1. Installieren Sie mutt sudo apt-get install mut...