nginx反向代理服务器端口问题

一、问题说明

过滤器在过滤登录请求的时候,对服务器的ip+端口号与访问请求的ip+端口号进行了校验。在没有使用nginx反向代理服务器的时候,可以校验成功的,但是在使用nginx反向代理之后,校验失败了。失败的错误图如下所示:

 ​​​​​​​这是我司系统部署给外省,他们在演示的时候出现的问题。下面解决的时候,ip和端口号我使用本地的来进行说明。

上图很明显是服务器的端口没有,我在本地debug调试查看,首先测试没有使用nginx反向代理的情况:

由上图可见通过request.getHeader()获取的是服务器的ip+端口号。request.getServerPort()获取的是本地服务器的端口号。(代码的那句“反向代理服务器端口”控制台打印就忽略吧,哈哈,之前调试的时候写的。)

然后测试使用nginx反向代理的情况:

nginx.conf的配置如下所示:

由上图可见,通过request.getHeader()获取的是服务器的ip,没有端口号了,emmm,一定是代理服务器设置的哪里出了问题。但是通过request.getServerPort()方法也是可以获取到反向代理服务器的端口号80的。

二、问题解决

后来查资料,发现了问题,修改如下:

 也就是在$host后面加上端口号。测试发现可以了,如下图:​​​​​​​

可以发现request.getServerPort()获取的端口号也变成了8080。咦~  不禁有个疑问nginx的端口不是80吗,咋request.getServerPort()怎么是8080端口了。

查资料发现,nginx的监听端口默认的80端口,如果nginx的监听端口不是默认的80端口,改为其他端口如81端口。

后端服务器中request.getServerPort()无法获得正确的端口,返回的仍然是80;正因为我指定了端口8080,所以返回的是8080端口了。来个小测试说明一下。来,我们用图说话:

nginx.conf配置:

debug调试:

​​​​​​​

看到没有,获取的依旧是80端口号。

修改配置:

 ​​​​​​​debug调试:

三、总结

nginx.conf配置要通过request.getServerPort()获取指定的端口号,此时需要修改所访问请求的代理相关的配置:proxy_set_header Host $host:端口号;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值