正文:
如何设置能限制某个 IP 某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的 DDoS 攻击的时候。其中CC 攻击(Challenge Collapsar)是 DDoS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。
为了防止 CC 攻击,可以使用Nginx的 HttpLimitReqModule 和 HttpLimitZoneModule 来限制 IP 在同一时间段的访问次数。
HttpLimitReqModule 是一个用来限制单位时间内连接数的模块,可以通过配置 limit_req_zone 和 limit_req 指令来实现限制。当并发连接超过指定数量时,服务器会返回 503 错误。
HttpLimitConnModule 则是用来限制单个 IP 的并发连接数,可以通过配置 limit_zone 和 limit_conn 指令来实现限制。
这两个模块的区别在于,HttpLimitReqModule 是对一段时间内的连接数进行限制,而 HttpLimitConnModule 是对同一时刻的连接数进行限制。
下面是一个使用 HttpLimitReqModule 限制某一段时间内同一 IP 访问次数的实例:
HttpLimitZoneModule 是一个用于限制并发连接数的模块实例
limit_zone 只能在 http 作用域中定义,而 limit_conn 可以在 http、server 和 location 作用域中定义。
服务器全局限 IP
指定目录的 IP 访问限制
在 nginx 的配置文件中,可以使用正则表达式来限制指定目录的 IP 访问。具体实现如下:
注意事项:
1. 注意事项一:一定要在 deny 指令中加入一个 IP 地址,否则会直接跳转到 403 页面,不再执行后续操作。如果 403 页面是同一域名下的默认页,会导致无限循环访问。
2. 注意事项二:允许访问的 IP 段需要按照从小到大的顺序排列。例如,只有在 127.0.0.0/24 之后才能是 10.10.0.0/16。其中,24 表示子网掩码为 255.255.255.0,16 表示子网掩码为 255.255.0.0,8 表示子网掩码为 255.0.0.0。
3. 注意事项三:在配置文件的结尾处添加 deny all 指令,表示除了上述允许访问的 IP 段之外,其他所有 IP 都被禁止访问。
如
本文章已结束,如转载请注明:汇站网 » 详解如何使用 Nginx 来查看高频访问 IP 并封禁 IP