Nginx

從 NGINX 速率限制中排除位置

  • July 14, 2020

我在 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;
...
}

myserver.conf:

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

我能想到的唯一解決方法是為我要排除的位置或伺服器設置一個非常高的爆發。因此,有效地永遠不會達到極限。

這個配置應該工作:

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

引用自:https://serverfault.com/questions/1025101