我在 Nginx 中定义了一个用于限制请求的区域,如他们的文档中所述,这很简单:
limit_req_zone $binary_remote_addr zone=leash:10m rate=18r/s;
到现在为止还挺好。
它适用于冒犯行为的客户,但最近他们中的一些人在访问我的服务时开始轮换他们的 IP 地址,主要在/24 范围内,所以我想知道是否可以将区域连接计数限制应用于整个 IP范围(不仅仅是每个 IP),像 --connlimit-mask 24 标志之类的东西可以与 iptables 一起使用......?
请您参考如下方法:
最简单的方法是使用 nginx
和 map
指令的 geo
组合,这也将为您提供最大的灵活性,恕我直言。
geo $geoRateBlacklist {
default 0;
192.0.0.0/24 1;
10.0.0.0/24 1;
172.0.0.0/24 1;
}
map $geoRateBlacklist $rateBlacklist {
1 $binary_remote_addr;
0 "";
}
limit_req_zone $rateBlacklist zone=leash:10m rate=18r/s;
从内存中快速完成,但应该可以工作。