我试图限制我的服务器(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
严格遵守定义速率。