首頁  >  文章  >  後端開發  >  nginx限制請求數(ngx_http_limit_req_module)模組 nginx concat module echo nginx module nginx upsync modul

nginx限制請求數(ngx_http_limit_req_module)模組 nginx concat module echo nginx module nginx upsync modul

WBOY
WBOY原創
2016-07-29 08:55:001274瀏覽

上一篇文章主要寫nginx限制連接數ngx_http_limit_conn_module 模組的作用及使用方法,下面來寫ngx_http_limit_req_module模組的作用及使用。

透過ngx_http_limit_req_module 模組可以透過定義的鍵值來限制請求處理的頻率。特別的,可以限制來自單一IP位址的請求處理頻率。 限制的方法如同漏斗,每秒固定處理請求數,延遲過多請求。

此模組提供了兩個配置參數,limit_req_zone 和 limit_req ,其中 limit_req_zone 只能配置在 http{} 段,而 limit_req 則可以配置於http{},server{},location{} 區段。


一、limit_req_zone

語法:limit_req_zone $variable z rate=rate;
配置段:http

此指令設定一塊共享記憶體限制域用來保存鍵值的狀態參數。特別是保存了目前超出請求的數量。鍵的值就是指定的變數(控制不被計算)。如:

nginx rtmp module,nginx upload module,lua nginx module,fastdfs nginx module,nginx sticky module,nginx add module,nginx concat module,echo nginx module,nginx upsync modul

註:
使用$binary_remote_addr變量,可以將每個狀態記錄的大小減少到64個字節,這樣1M的內存可以保存大約1萬6千個64字節的記錄

如果限制域的存儲空間耗盡了,對於後續所有請求,伺服器都會回傳503(Service Temporarily Unavailable)錯誤

速度可以設定為每秒處理請求數和每分鐘處理請求數,其值必須是整數,所以如果你需要每秒處理少於1個的請求,2秒處理一個請求,可以使用30r/m


二、limit_req

語法: limit_req z burst=number [nodelay];
配置段:http,server,location

設定對應的共享記憶體限制域和允許被處理的最大請求數閥值。如果請求的頻率超過了限制域配置的值,請求處理會被延遲,所以所有的請求都是以定義的頻率被處理的。超過頻率限制的請求會被延遲,直到被延遲的請求數超過了定義的閥值,這時,這個請求會被終止,並返回503(Service Tempporarily Unavailable)錯誤,這個閥值的預設值為0,如:

限制頻率每秒不超過一個請求,同時允許超過頻率限制的請求數不多於100個;如果不希望超過的請求被延遲,可以用nodelay參數。

nginx rtmp module,nginx upload module,lua nginx module,fastdfs nginx module,nginx sticky module,nginx add module,nginx concat module,echo nginx module,nginx upsync modul


三、設定使用範例

limit_req_zone $binary_remote_addr z rate=1r/s;
主要是用來定義變量,空間名稱,以及共享記憶體大小。

limit_req z burst=100 nodelay;
主要是用來使用前面定義的空間,定義請求頻率限制,使用nodelay則表示不希望超過的請求被延遲。

nginx rtmp module,nginx upload module,lua nginx module,fastdfs nginx module,nginx sticky module,nginx add module,nginx concat module,echo nginx module,nginx upsync modul

可能要對某些IP不做限制,需要使用到白名單。

模組位址:https://yunpan.cn/cqSKP6BrJ2AeT 存取密碼 4f50

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介紹了nginx限制請求數(ngx_http_limit_req_module)模組,包括了module,nginx方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn