Maison  >  Questions et réponses  >  le corps du texte

Problème avec le proxy inverse nginx Tomcat

Bonjour à tous, j'ai une question

Description du problème :

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;
            }

Ce qui précède fait partie de ma configuration nginx, le but est

1. Sautez toutes les requêtes de www.abc.com/tomcat/xxx vers Tomcat, la fonction est normale

2. Accédez à toutes les requêtes de www.abc.com/ife2017/xxx vers Tomcat, puis accédez à ife2017 via Tomcat. La fonction n'est pas normale

.

Remarque : ife2017 est un dossier dans le répertoire racine de Tomcat. Il est accessible normalement avant d'utiliser le proxy nginx

.

La performance spécifique est que www.abc.com/ife2017/123 peut sauter normalement sans numéro de port
Mais www.abc.com/ife2017/123/456 ne peut pas sauter normalement et passera à www.127.0 .0.1.com /ife2017/123/456

Ma solution actuelle consiste à remplacer 127.0.0.1 par le nom de domaine réel, mais dans ce cas, le numéro de port 8080 sera ajouté après le saut. Bien que le problème ne soit pas grave, je veux toujours une solution parfaite

.

Merci à tous d'avance

巴扎黑巴扎黑2714 Il y a quelques jours441

répondre à tous(1)je répondrai

  • 某草草

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

    Problème de configuration du proxy inverse, il n'y a pas d'option similaire dans tomcat并不知道他在nginx后面,所以发送的重定向响应头仍然是使用后端的地址。在apache中可以通过配置ProxyPassReverse选项修改后端发给client的响应头来实现,在nginx, alors ajoutez des informations de proxy à la requête envoyée au backend (dites à Tomcat qu'il y a un proxy devant lui) :

    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;
        }
    }

    Document de référence : Solution NGINX pour Apache ProxyPassReverse

    répondre
    0
  • Annulerrépondre