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