nginx 配置访问限制

使用 nginx 提供的访问限制方式,但是并没有生效,如下代码:

location ~ ^/system.html {
    allow IP地址;
    deny all;
}

可能是因为获取的地址通过了多层代理。
nginx 提供的访问限制是通过内置变量 $remote_addr 进行限制,所有上述配置的地址都无法实现相应的效果。

解决方式:
当 nginx处于前端负载均衡、cdn等代理后,来源IP总是代理IP,这样就无法如上对来源IP进行限制访问。
可以通过 X-Real-IP 和 X-Forwarded-For 来获取客户端真实IP,但是当一个请求通过多个代理服务器时,X-Real-IP 将无法获取到客户端真实IP(只能获取到与服务器本身直连的上层请求ip)。所以本次使用 X-Forwarded-For 来获取客户端真实IP(X-Forwarded-For指的是链路反追踪,从客户的真实ip为起点,穿过多层级的proxy ,最终到达web 服务器,都会记录下来)。

如下图,通过内置变量 $http_x_forwarded_for 获取真实客户端IP。
在这里插入图片描述
新建 white.conf,对固定IP进行访问限制,当真实IP不属于此列时,直接返回403:
这里只做了IP的匹配,没有对IP段做判断,后续熟悉了在添加,里面功能同白名单,黑名单限制的话去掉第二个if,在第一个if中直接返回403
在这里插入图片描述把 white.conf 添加进相应的location块中:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值