为 NGINX 定义突发和无延迟

为 NGINX 定义突发和无延迟

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

相关内容