Heim  >  Fragen und Antworten  >  Hauptteil

Problem mit Nginx-Reverse-Proxy Tomcat

Hallo zusammen, ich habe eine Frage

Problembeschreibung:

location ^~ /tomcat/ {
            proxy_pass   http://127.0.0.1:8080/;
            proxy_redirect  off;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }

location ^~ /ife2017/ {
            proxy_pass   http://127.0.0.1:8080/ife2017/;
            proxy_redirect  off;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            }

Das Obige ist Teil meiner Nginx-Konfiguration, der Zweck ist

1. Leiten Sie alle Anfragen von www.abc.com/tomcat/xxx an Tomcat weiter, die Funktion ist normal

2. Springen Sie alle Anfragen von www.abc.com/ife2017/xxx zu Tomcat und dann über Tomcat zu ife2017. Die Funktion ist nicht normal

Hinweis: ife2017 ist ein Ordner im Stammverzeichnis von Tomcat, auf den vor der Verwendung des Nginx-Proxys normal zugegriffen werden kann

Die spezifische Leistung besteht darin, dass www.abc.com/ife2017/123 ohne Portnummer normal springen kann


Aber www.abc.com/ife2017/123/456 kann nicht normal springen und springt zu www.127.0 .0.1.com /ife2017/123/456

Meine aktuelle Lösung besteht darin, 127.0.0.1 in den tatsächlichen Domainnamen zu ändern, aber in diesem Fall wird die Portnummer 8080 nach dem Sprung hinzugefügt. Obwohl das Problem nicht groß ist, möchte ich dennoch eine perfekte Lösung

Vielen Dank an alle im Voraus

巴扎黑巴扎黑2714 Tage vor444

Antworte allen(1)Ich werde antworten

  • 某草草

    某草草2017-05-16 17:11:04

    反向代理配置的问题,tomcat并不知道他在nginx后面,所以发送的重定向响应头仍然是使用后端的地址。在apache中可以通过配置ProxyPassReverse选项修改后端发给client的响应头来实现,在nginx中没有类似选项,所以在发给后端的请求中添加代理信息来实现(告诉tomcat前面有代理):

    server {
        listen myhost:80;
        server_name  myhost;
        location / {
            root /path/to/myapp/public;
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://myapp:8080;
        }
    }

    参考文档:NGINX Solution for Apache ProxyPassReverse

    Antwort
    0
  • StornierenAntwort