在配置Nginx反向代理到服务端时,如果Nginx配置端口不是80端口,容易出现上面的问题,比如访问http://5g.139130.com:8080/地址,由于用户还没登录,则重定向到http://5g.139130.com:8080/login,但浏览器上看到的地址却是http://5g.139130.com/login,跟我们预期的不一致,nginx的配置信息如下:
server {
listen 8080;
server_name 5g.139130.com;
access_log /var/log/nginx/logs/$server_name-$year-$month-$day.log json;
location / {
proxy_read_timeout 20;
proxy_connect_timeout 5;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
}
主要的问题出现在proxy_set_header Host $host; 这一句配置,没有把实际的8080端口传递给服务端,导致服务端认为端口为80,所以重定向时,直接跳转到http://5g.139130.com/login,解决的方法如下:
proxy_set_header Host $host:$server_port;
加上实际端口号$server_port即可。
打赏