Nginx阻止某段范围IPs访问

程序员专属-极客T恤

Nginx 要阻止某个IP访问,非常简单,一个deny 关键字就够了。如要阻止1.2.3.4这个IP,即:

deny 1.2.3.4;

当想要阻止1.2.3这个网段的下的所有IP,你会很自然的想到通配符,于是你会试着写:

deny 1.2.3.*;

但可惜,nginx deny 语法并不支持 * 这样的通配符格式,但好在支持 CIDR声明 格式。

CIDR(无类别域间路由,Classless Inter-Domain Routing)是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。

CIDR主要是一个按位的、基于前缀的,用于解释IP地址的标准。它通过把多个地址块组合到一个路由表表项而使得路由更加方便。

IPv4的CIDR地址块的表示方法和IPv4地址的表示方法是相似的:由四部分组成的点分十进制地址,后跟一个斜线,最后是范围在0到32之间的一个数字:A.B.C.D/N

所以,要阻止1.2.3网段下的所有地址,要这么写:

deny 1.2.3.0/24;

参考资料:

 


关注微信公众号

码中人 微信公众号