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)