Nginx源站IP限制访问配置后web页面请求失败

由于项目使用Nginx做负载均衡,挂载两台服务器接收外部请求。
现需要限制外部请求IP访问,指定固定IP地址段可以访问服务器,因此需要对Nginx做allow和deny的配置。
做好之后发现可以登录系统,但是系统中的页面和菜单都打不开,
查询资料发现是由于在透明代理下,如果不做任何配置Tomcat认为所有的请求都是Nginx发出来的,这样会导致如下的错误结果:
1)总是http,而不是实际的http或https:request.getScheme()
2)总是false(因为总是http):request.isSecure()
3)总是Nginx请求的IP,而不是用户的IP:request.getRemoteAddr()
4)总是Nginx请求的Url而不是用户实际请求的Url:request.getRequestUrl()
5)总是Nginx请求的ip:request.getServerName()
6)总是Nginx请求的端口:request.getServerPort()
7)总是重定向到http上(因为认为当前是http请求):request.sendRedirect(相对url)
因此,如果对Nginx做了ip限制后,需要修改配置,
配置Nginx的转发选项:
proxy_set_header Host $host;//解决getRequestURL、getServerName、getServerPort
如果端口不是默认端口,需要改成proxy_set_header Host $host:$server_port;
proxy_set_header  X-Real-IP  $remote_addr;
proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto  $scheme; //解决getScheme、isSecure、sendRedirect
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值