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

12 nützliche Array-Tricks in JavaScript

Inhaltsverzeichnis Array-Deduplizierung 1. from()...

Detaillierte Erklärung zu JavaScript Anti-Shake und Throttling

Inhaltsverzeichnis Entprellen Gaspedal Zusammenfa...

Verwendung des Fokus-innerhalb-Selektors von CSS3

Pseudoelemente und Pseudoklassen Apropos, schauen...

Detaillierter Prozessbericht der Nginx-Installation und -Konfiguration

Inhaltsverzeichnis 1 Einführung in nginx 1 Was is...

Anweisungen zur Verwendung des HTML-Tags dl dt dd

Grundaufbau: Code kopieren Der Code lautet wie fol...

So löschen Sie die Validierungsaufforderung bei der Elementformularvalidierung

Inhaltsverzeichnis Problemszenario: Lösung: 1. Üb...

Grafisches Beispiel für die Verwaltung von Datenträgerkontingenten unter Linux

Das Datenträgerkontingent ist die Speichergrenze ...

Grundlegendes Lernen und Erfahrungsaustausch zu MySQL-Transaktionen

Eine Transaktion ist eine logische Gruppe von Ope...

Das Konzept und die Eigenschaften von benutzerdefinierten MySQL-Variablen

Ein MySQL Custom Value ist ein temporärer Contain...