簡體   English   中英

如何重置nginx速率限制

[英]How to reset nginx rate limiting

我成功地在 nginx 配置中使用limit_req_zonelimit_req實現了速率限制,如nginx 博客中所述

速率限制設置配置得非常嚴格。 因此,如果我必須執行一些管理任務,有時會遇到速率限制。

所以我的問題是:是否可以在不重新啟動 nginx 進程的情況下以某種方式重置此速率限制?

重新啟動 nginx 進程有效,但我沒有在文檔或在線中找到其他解決方案。

我相信為您的管理區域找到一個 url 位置模式對您來說真的更好。 在這種情況下,您可以定義另一個具有更高限制的速率限制,並將其設置為該特定 url。 像這樣:

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
limit_req_zone $binary_remote_addr zone=adminlimit:10m rate=30r/s;

server {
    
    location ~* /admin/* {
        limit_req zone=adminlimit;
        
        ...
    }
}

為了實現您的目標,重置整個 memory_zone 不會有太大幫助,不是嗎? 但是對於 NGINX Plus,可以使用 NGINX Plus API 重置整個內存區域。

http://nginx.org/en/docs/http/ngx_http_api_module.html#http_limit_reqs_http_limit_req_zone_name

DELETE - 重置 HTTP limit_req 區域的統計信息 重置請求限制統計信息。

NGINX API 模塊僅通過商業訂閱提供,不隨 NGINX OSS 提供。

如果您需要重置每個rate_key或用戶/客戶端的速率限制,我強烈建議為此類任務/客戶端定義標頭/cookie/遠程添加器,以便將此類客戶端/任務排除在速率限制之外。

例如。 如果您已登錄並發送 cookie,您可以驗證 cookie 並從所有 URL 的速率限制中排除管理員。 對於一些已知的遠程地址也是如此。 這是實現此類任務的常用方法,在您剛剛找到的博客中也有提到。

如果這不適用於您的要求,很高興了解有關用例的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM