![为 NGINX 定义突发和无延迟](https://linux22.com/image/790419/%E4%B8%BA%20NGINX%20%E5%AE%9A%E4%B9%89%E7%AA%81%E5%8F%91%E5%92%8C%E6%97%A0%E5%BB%B6%E8%BF%9F.png)
我试图限制我的服务器(API)每秒只允许发出 3 个请求(通过 IP,来自 Cloudflare),之后用户会收到 HTTP 429 代码。
我不想允许任何过度的事情,也就是说,如果用户提出第四个请求,我不想等到前三个请求完成才允许它,我只是想立即拒绝它。
阅读这,这和这,我认为我创建了一个可以解决问题的配置。这种配置正确吗?
http {
limit_req_zone $http_cf_connecting_ip zone=ip_limit:10m rate=3r/s;
limit_req_status 429;
limit_conn_status 429;
server {
listen 80;
server_name seu_example.com;
location / {
limit_req zone=ip_limit burst=3 nodelay;
# ...
}
}
# ...
}
答案1
这burst=3
将允许超过定义速率的超额请求。因此,您需要将其设置为burst=0
严格遵守定义速率。