从 NGINX 速率限制中排除位置

从 NGINX 速率限制中排除位置

我在 nginx 的 http 块中定义了两者,因此它将适用于所有服务器和位置块limit_req_zonelimit_req

有没有办法将某个位置或服务器块排除在该限制之外?

nginx.conf:

http {
...
limit_req_zone $binary_remote_addr zone=main:10m rate=25r/s;
limit_req zone=main burst=100 nodelay;
limit_req_status 429;
...
}

我的服务器.conf:

server {
...
     location /web/ {
     directive_to_disable_ratelimit
     }
...
}

我能想到的唯一解决方法是为我想排除的位置或服务器设置一个极高的突发值。这样实际上就永远不会达到限制。

答案1

该配置应该可以工作:

http {
    limit_req_zone $binary_remote_addr zone=main:10m rate=25r/s;
    limit_req_status 429;
    
    server {
    ...
        location / {
            limit_req zone=main burst=100 nodelay;

            ... other location directives
        }

        location /web {
            ... other location directives
        }
    }
}

nginxlocation选择算法将在除匹配的请求之外的所有请求上匹配第一个块/web

相关内容