在某種應用場景下,我們需要在Nginx下對IP和目錄進行限速;本文通過Nginx的limit_zone和limit_rate等方式實現(xiàn)對IP和目錄的限速。

AD:

Nginx配置與應用詳解專題的投票結果來看,Nginx已經是目前僅次于APache和MS IIS的Web服務器。Nginx優(yōu)秀的高并發(fā)支持和高效的負載均衡是我們選擇它的理由。但有時我們希望它能做的更多。本文將向您介紹如何在Nginx下對IP和目錄進行限速,在某種應用場景下,這也是個常見需求。

Nginx可以通過HTTPLimitZoneModule和HTTPCoreModule兩個目錄來限速。

示例:

  1. limit_zone one $binary_remote_addr 10m;  
  2.  
  3. location / {   
  4.         limit_conn one 1;   
  5.         limit_rate 100k;   

說明:

limit_zone,是針對每個IP定義一個存儲session狀態(tài)的容器。這個示例中定義了一個10m的容器,按照32bytes/session,可以處理320000個session。

然后針對目錄進行設定。

  1. limit_conn one 1; 

是限制每個IP只能發(fā)起一個連接。

  1. limit_rate 100k; 

是對每個連接限速100k. 注意,這里是對連接限速,而不是對IP限速。如果一個IP允許兩個并發(fā)連接,那么這個IP就是限速limit_rate x 2。

關于limit_zone的原始文檔,請見 http://wiki.Nginx.org/NginxHttpLimitZoneModule

關于limit_rate和limit_conn的原始文檔,請見http://wiki.Nginx.org/NginxHttpCoreModule

【編輯推薦】

  1. Nginx優(yōu)化設置基本的TCP配置
  2. Nginx內核優(yōu)化的源代碼探秘
  3. Nginx內核參數(shù)相關的優(yōu)化設定
  4. Nginx + PHP-FPM + APC=絕妙的組合