[英]How to reset nginx rate limiting
我成功地在 nginx 配置中使用limit_req_zone
和limit_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.