我在 nginx 的 http 块中定义了两者,因此它将适用于所有服务器和位置块limit_req_zone
。limit_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
。