Nginx 中对“繁重” HTTP 请求进行速率限制

Nginx 中对“繁重” HTTP 请求进行速率限制

任务:限制 Nginx 中的某些请求(“重度”,会导致大量资源使用),同时对其他请求应用较少的限制。

当前配置如下:

http {
    ...
    # Up to 2/min for /heavy/request
    limit_req_zone $remote_addr zone=slow:10m rate=2r/m;
    # Up to 60/sec for everything else
    limit_req_zone $remote_addr zone=common_sec:10m rate=60r/s;

    server {
        ...
        limit_req zone=common_sec burst=90 nodelay;

        location /heavy/request {
            limit_req zone=slow;
        }
        ...
    }
    ...
}

我原本预计 /heavy/request 在每分钟尝试超过两次时将被阻止,但该限制似乎从未应用。

我应该如何修改配置以按预期限制“重度”请求?

谢谢。

相关内容