0. 故障现象
继上次的Nginx反向代理端口丢失后又发现了个小问题.
输入url: http:/xxx.xxx.xxx.xxx:777/aaa/ 可以正常访问到登录页面
输入用户名密码后,页面跳转.
跳转后url: http:/xxx.xxx.xxx.xxx/aaa/main.do?method=main 无法正常显示页面
手工将url改为 http:/xxx.xxx.xxx.xxx:777/aaa/main.do?method=main 可以正常访问页面
但此时原先的https变成了http
由于从外网访问,防火墙关闭了80端口.导致400报错
1. 原因分析
后端服务器是http,跳转的proxy_pass 会将url改为http://pana/
如果直接写proxy_pass https://pana/;会因为后端没有https提供服务导致400报错
那么只需要强制再把http 跳转成https即可.修改conf/nginx.conf的以下配置:
proxy_redirect http:// https://;
2. 配置文件
upstream pana {
server 192.168.31.70:8088 max_fails=1 fail_timeout=10s;
}
server {
listen 777;
server_name pana.cn;
charset utf-8;
access_log logs/host.access.log main;
location / {
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;
proxy_pass http://pana/;
proxy_redirect http:// https://;
}
}
3. 结果
输入url: http:/xxx.xxx.xxx.xxx:777/aaa/ 可以正常访问到登录页面
输入用户名密码后,页面跳转.
跳转后url: https:/xxx.xxx.xxx.xxx:777/aaa/main.do?method=main 可以正常访问页面
后续跳转均正常