Nginx代理Spring不分离多项目跳转端口丢失问题

外网访问的url

 http://xxxxx:8080时,内部会自动重定向到http://xxxxx:8080/login去登录,但是使用nginx部署好,会发现跳转的是
 http://xxxxx/login,导致无法正确访问。

nginx代理

server {
	   listen       8080;
	   server_name  localhost;
	  location /{
	       proxy_pass http://localhost:9090;
	   }
}

问题

如果你的项目里面有内部重定向到login,比如shiro,或者你自己 redirect 一个路径。你在浏览器上会发现你的路径此时变成了 xxxxx/login ,而不是我们想要的 xxxxx:8080/login.

此时我们可以将nginx配置修改成以下这样:

    server {

        listen       8080;

        server_name  dev.wushan.ren;

        location / {

            proxy_pass http://localhost:9090;

            proxy_set_header X-Forwarded-Host $host;

            proxy_set_header X-Forwarded-Server $host;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header Host $host:$server_port;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

重启nginx,发现成功挑战了,如果以上方法没有效果,可以将配置文件修改成如下:

server {
	    listen       8080;
	    server_name  localhost;
		location /{
	       proxy_pass http://localhost:9090;
	       
		   proxy_set_header Referer $http_referer;
    	   proxy_set_header Host $host:8080;
	   }	
}
以上就解决了404无法访问问题。
标签:
评论 (0)
说点什么吧... (取消回复)