我们在配置nginx代理时,正常外网的映射与内网端口一致时,不会出现redirect跳转不对的情况,但如果内网监听的端口与外网监听的端口不一致时,就会产生redirect跳转不对的情况。为了解决这个问题,必须配置proxy_direct, 以保持redirect时端口不一样的问题;表现为:
访问外网地址:http://221.***.***.238:2280/login时,登录成功后,后台java代码会发redirect响应,让前端浏览器请求loginSuccess服务,但由于后台nginx监听的是80端口,这时,nginx会设置redirect的路径为:http://221.***.***..238/loginSuccess(80由于是http的默认端口,不需要附带),从而造成访问不到正确的Url 地址;
upstream sctm_server {
server 192.***.***..7:18005;
}
通过以上配置,在执行http://221.***.***.238:2280/login时,登录成功后,后台java代码会发redirect响应,让前端浏览器请求loginSuccess服务,这时,nginx会设置redirect的路径为:http://221.***.***.238:2280/loginSuccess;表现为返回给前端浏览器的response附加了location值为:http://221.***.***.238:2280/loginSuccess,这样即可正常访问后台服务;