作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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;
关于整个子网的 Nginx 速率限制计数,而不仅仅是每个 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49998529/
我是一名优秀的程序员,十分优秀!