Nginx 單IP請(qǐng)求速率限制

Nginx 服務(wù)器可幫助我們實(shí)現(xiàn)對(duì)單個(gè)ip的請(qǐng)求速率限制

具體實(shí)現(xiàn)如下

http{

? ? ? ? limit_req_zone $binary_remote_addr? zone=one:10m? rate=10r/s;

? ? ? ? ?...

? ? ? ?server{


? ? ? ? ? location/search/{

? ? ? ? ? ? ?limit_req zone=one burst=5;

? ? ? ? ? ? ?}

? ? ? ? limit_req_zone?$session_variable?zone=name_of_zone:size??rate=rate 這句是設(shè)置存儲(chǔ)session的區(qū)域 大小 并設(shè)置速率限制

? ? ? ?$session_variable 意思是攝者session存儲(chǔ)的值key值? 我們以$binary_remote_addr(用戶ip)為key

? ? ? ?zone 意思是設(shè)置存儲(chǔ)key的區(qū)域名稱

? ? ? ?size 意思是區(qū)域大小 此處設(shè)置是10MB ,1 MB區(qū)域可容納大約16000個(gè)此大小的狀態(tài)。

? ? ? ?rate 意思是設(shè)置限制的速率? ? 1r/s => 是1秒 一個(gè)請(qǐng)求? ?2r/s=> 兩秒一個(gè)? 2r/m=>一分鐘兩個(gè)(具體看自己需求)

? ? ? ?設(shè)置好之后在server區(qū)域的location中? ?開(kāi)啟當(dāng)前命中區(qū)域的限制? ? limit_req? ?zone=one ;? 如此即可實(shí)現(xiàn)

? ? ? ?#限制每ip每秒不超過(guò)10個(gè)請(qǐng)求,爆發(fā)數(shù)burst為5#brust的意思就是,如果第1秒、2,3,4秒請(qǐng)求為9個(gè),

? ? ? ?#第5秒的請(qǐng)求為15個(gè)是被允許的。

? ? ? ?# 但是如果你第1秒就15個(gè)請(qǐng)求,第2秒超過(guò)10的請(qǐng)求返回503錯(cuò)誤。

? ? ? ? #nodelay,如果不設(shè)置該選項(xiàng),嚴(yán)格使用平均速率限制請(qǐng)求數(shù),#第1秒5個(gè)請(qǐng)求時(shí),5個(gè)請(qǐng)求放到第2秒執(zhí)行,

? ? ? ?#設(shè)置nodelay,15個(gè)請(qǐng)求將在第1秒執(zhí)行。

? ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容