nginx监听非80端口,转发地址端口丢失!解决方案!!!!!
nginx监听非80端口,转发地址端口丢失!解决方案!!!!!
- 问题场景:
登录成功后,跳转主页,端口丢失,无法访问。nginx监听端口:81,tomcat访问端口:9004。例如:登录地址:http://xxx:81/login,登录成功后跳转地址:http://xxx:81/index,但实际跳转地址变为:http://xxx/index,nginx代理端口(81)无故消失,导致无法访问。
nginx配置如下:
location /xxx/{
proxy_pass http://127.0.0.1:9004/xxx/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $ host:$server_port;
proxy_redirect http:// https://;
} - 网上提供的方案:
1) proxy_set_header Host $ host:$server_port;
改为
proxy_set_header Host $host:81;(写死监听端口,经测试无效) - 最终解决方案:
增加配置:proxy_set_header X-Forwarded-Port $server_port;
最终配置如下:
location /xxx/{
proxy_pass http://127.0.0.1:9004/xxx/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $ host:$server_port;
proxy_set_header X-Forwarded-Port $server_port;(这个配置是重点)
proxy_redirect http:// https://;
}
重启nginx,成功进入主页;
参考连接:[https://www.95id.com/oauth2-client-nginx-bugs.html] - 总结:
目前只解决问题,具体原因未知,欢迎大佬指正!