nginx屏蔽指定IP

首先找到nginx的配置文件,只要在相关配置文件中添加一些配置语句即可。

简单使用配置

  1. 屏蔽单个IP地址,使用关键词deny,例如:deny 10.11.12.13
  2. 允许单个IP地址,使用关键词allow,例如:allow 10.11.12.14
  3. 屏蔽所有的IP地址:deny all
  4. 允许所有IP地址:allow all
  5. 屏蔽一定范围内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
  6. 允许一定范围内的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/;
}
posted @ 2021-06-11 15:30  卡洛小豆  阅读(1022)  评论(0编辑  收藏  举报