nginx屏蔽指定IP
首先找到nginx的配置文件,只要在相关配置文件中添加一些配置语句即可。
简单使用配置
- 屏蔽单个IP地址,使用关键词deny,例如:
deny 10.11.12.13
- 允许单个IP地址,使用关键词allow,例如:
allow 10.11.12.14
- 屏蔽所有的IP地址:
deny all
- 允许所有IP地址:
allow all
- 屏蔽一定范围内IP地址,使用IP地址加子网掩码的组合。例如:
- 屏蔽10.0.0.1~10.255.255.254这个范围的ip地址:
deny 10.0.0.0/8
- 屏蔽10.11.0.1~10.11.255.254这个范围的IP地址:
deny 10.11.0.0/16
- 屏蔽10.11.12.1~10.11.12.254这个范围的IP地址:
deny 10.11.12.0/24
- 屏蔽10.0.0.1~10.255.255.254这个范围的ip地址:
- 允许一定范围内的IP地址访问,同上所示,关键词换成
allow
。
以上只是最基本的使用方法,那么问题来了,nginx做代理的时候,可以监听多个地址或者指向不同的网站,那么该怎么只针对不同的网站做区分呢?
指定代理网站添加屏蔽策略
针对上面的问题,我们只要把屏蔽IP的语句放在不同的位置就好了。在nginx的配置文件中,不同的语句块所产生的影响效果也是不一样的。
语句块 | 效果 |
---|---|
http{} |
对nginx的所有服务生效,所有代理网站都会受到影响 |
server{} |
指定的server服务,只对配置的代理网站起作用 |
location |
指定的访问地址 |
limit_except |
指定的http方法谓词 |
如果现在有几百个不同的IP地址,它们又分布在不同的网段,这时候写在配置文件中,每个IP写一行,那这个配置文件岂不是要写的无比的长,可读性就太差了,修改起来也不方便。这时候我们该怎么办呢?
写成单独的屏蔽策略配置文件
新建一个配置文件,例如blockip.conf
,把所有的屏蔽ip策略可以写在这个文件中,最后我们只要在nginx的配置文件nginx.conf
中引入即可,还可以在不同的语句块中引入,效果同上表所示。
屏蔽策略配置文件中可以写允许的IP地址,也可以写屏蔽的IP地址。但是有一点,当你只放开几个IP地址,然后屏蔽剩余所有IP地址时,一定要先写放行的ip地址。
# 放行部分ip访问
allow 10.11.12.13;
allow 10.11.12.14;
allow 10.11.12.15;
# 禁止其余ip访问
deny all;
示例配置:
location /commonService/ {
include blockip.conf;
proxy_pass http://127.0.0.1:8082/;
}
GitHub : https://github.com/fxiaoyu97
博客园 : https://www.cnblogs.com/tudou1179006580
微信公众号 : 三更编程菌
Copyright ©2019 卡洛小豆
【转载文章务必保留出处和署名,谢谢!】
博客园 : https://www.cnblogs.com/tudou1179006580
微信公众号 : 三更编程菌
Copyright ©2019 卡洛小豆
【转载文章务必保留出处和署名,谢谢!】