在Nginx下針對(duì)IP和目錄限速
技術(shù)支持服務(wù)電話:15308000360 【7x24提供運(yùn)維服務(wù),解決各類(lèi)系統(tǒng)/軟硬件疑難技術(shù)問(wèn)題】
在某種應(yīng)用場(chǎng)景下,我們需要在Nginx下對(duì)IP和目錄進(jìn)行限速;本文通過(guò)Nginx的limit_zone和limit_rate等方式實(shí)現(xiàn)對(duì)IP和目錄的限速。
從Nginx配置與應(yīng)用詳解專(zhuān)題的投票結(jié)果來(lái)看,Nginx已經(jīng)是目前僅次于APache和MS IIS的Web服務(wù)器。Nginx優(yōu)秀的高并發(fā)支持和高效的負(fù)載均衡是我們選擇它的理由。但有時(shí)我們希望它能做的更多。本文將向您介紹如何在Nginx下對(duì)IP和目錄進(jìn)行限速,在某種應(yīng)用場(chǎng)景下,這也是個(gè)常見(jiàn)需求。
Nginx可以通過(guò)HTTPLimitZoneModule和HTTPCoreModule兩個(gè)目錄來(lái)限速。
示例:
limit_zone one $binary_remote_addr 10m; location / { limit_conn one 1; limit_rate 100k; }
說(shuō)明:
limit_zone,是針對(duì)每個(gè)IP定義一個(gè)存儲(chǔ)session狀態(tài)的容器。這個(gè)示例中定義了一個(gè)10m的容器,按照32bytes/session,可以處理320000個(gè)session。
然后針對(duì)目錄進(jìn)行設(shè)定。
limit_conn one 1;
是限制每個(gè)IP只能發(fā)起一個(gè)連接。
limit_rate 100k;
是對(duì)每個(gè)連接限速100k. 注意,這里是對(duì)連接限速,而不是對(duì)IP限速。如果一個(gè)IP允許兩個(gè)并發(fā)連接,那么這個(gè)IP就是限速limit_rate x 2。
關(guān)于limit_zone的原始文檔,請(qǐng)見(jiàn) http://wiki.Nginx.org/NginxHttpLimitZoneModule
關(guān)于limit_rate和limit_conn的原始文檔,請(qǐng)見(jiàn) http://wiki.Nginx.org/NginxHttpCoreModule