我在 Nginx 中定义了一个用于限制请求的区域,如他们的文档中所述,这很简单:

limit_req_zone $binary_remote_addr zone=leash:10m rate=18r/s;

到现在为止还挺好。

它适用于冒犯行为的客户,但最近他们中的一些人在访问我的服务时开始轮换他们的 IP 地址,主要在/24 范围内,所以我想知道是否可以将区域连接计数限制应用于整个 IP范围(不仅仅是每个 IP),像 --connlimit-mask 24 标志之类的东西可以与 iptables 一起使用......?

请您参考如下方法:

最简单的方法是使用 nginxmap 指令的 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; 

从内存中快速完成,但应该可以工作。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!