![Nginx 速率限制异常](https://linux22.com/image/706936/Nginx%20%E9%80%9F%E7%8E%87%E9%99%90%E5%88%B6%E5%BC%82%E5%B8%B8.png)
我已经在 Nginx 配置中成功将速率限制应用到 1r/s,但是我想实现一个功能,该功能将对列入白名单的 IP 应用不同的速率限制设置(20r/s)。以下是相关的配置设置:
nginx.conf
limit_req_zone $limit zone=all:20m rate=1r/s;
域名配置文件
geo $whitelist {
default 1;
1.1.1.1 0;
}
map $whitelist $limit {
0 "";
1 $binary_remote_addr;
}
limit_req zone=all burst=5;
这按预期工作,当我将 1.1.1.1 列入白名单时,我可以访问网站而完全不受速率限制。如何为列入白名单的 IP 实现 20r/s 的限制?我知道解决方案不是使用 2 个区域,但我已经阅读了文档几次,不知道如何实现这一点。提前致谢。
答案1
limit_req_zone $limit zone=all:20m rate=1r/s;
geo $whitelist {
default 1;
1.1.1.1 0;
}
map $whitelist $limit {
0 "";
1 $binary_remote_addr;
}
limit_req_zone $whitelist zone=new:10m rate=25r/m; burst=5;