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

So schreiben Sie speichereffiziente Anwendungen mit Node.js

Inhaltsverzeichnis Vorwort Problem: Kopieren groß...

So installieren Sie die grafische Benutzeroberfläche unter Linux

1. Linux-Installation (Root-Benutzerbetrieb) 1. I...

mysql 8.0.18 mgr-Installation und seine Umschaltfunktion

1. Systeminstallationspaket yum -y install make g...

CSS3 verwendet var()- und calc()-Funktionen, um Animationseffekte zu erzielen

Wissenspunkte in der Vorschau anzeigen. Animation...

Native JS implementiert einen sehr gut aussehenden Zähler

Heute zeige ich Ihnen einen gut aussehenden Zähle...

Detaillierter Code zur Implementierung einer 3D-Tag-Cloud in Vue

Vorschau: Code: Seitenabschnitte: <Vorlage>...

CSS-Beispielcode zum Ausblenden der Bildlaufleiste und Scrollen des Inhalts

Vorwort Wenn die HTML-Struktur einer Seite viele ...

Was bedeutet href=# in einem Link?

Links zur aktuellen Seite. ------------------- Übl...

Erfahren Sie mehr über JavaScript-Iteratoren

Inhaltsverzeichnis Einführung Wie sieht ein Itera...

Verwendung und Beschreibung des HTML-Tags tbody

Das Tbody-Element sollte in Verbindung mit den Ele...