Nginx下載限速
Nginx可以通過HTTPLimitZoneModule和HTTPCoreModule兩個模塊來實現對目錄和IP進行下載限速。
先來一個配置示例看下:
limit_zone one $binary_remote_addr 10m; server { listen 80; server_name test.361way.com; location / { root /var/www/html; index index.html index.htm index.php; autoindex on; autoindex_exact_size off; autoindex_localtime on; limit_conn one 2; limit_rate 10k; } }
該配置中分了兩部分。
上面一部分用到了模塊HTTPLimitZoneModule的用法。上面的配置中定義了一個名字為one大小為10M的容器,用於存儲每個IP的session狀態。該容器的大小要求大於等於32K,即每個session的大小為大於等於32k。按本例中10M大小來算,可以處理320000個session 。配置完該容器後,HTTPLimitZoneModule模塊下還有另外一個參數limit_conn,配合limit_zone參數使用。如本例中,指定了one容器中,限制每個IP只能發起來兩個連接。HTTPLimitZoneModule模塊的詳細用法可以參看其官方wiki頁面。本示例中的配置是只針對根目錄的。如果要對其他目錄設置,改為其應的location /path 即可。
下面接著看第二部分,即HTTPCoreModule模塊部分。該模塊所該的參數比較多。但對於速度方面的限制主要為limit_rate參數。該參數用於限制每個連接的速度大小。本例中限制每個連接的最大下限速度為10k/s 。不過本例中對於每個IP的下載速度的峰值是多大呢?
很簡間,單個IP的最大連接為2,每個連接的最大速度為10k,每個IP的最大速度即為:10k * 2 = 20k/s 。HTTPCoreModule模塊的其他用法,也可以參看該模塊的官方wiki 。
總結:
Nginx以按默認方式編譯安裝的話自動會帶以上兩個模塊的,不像apache需要通過編譯時指定或動態加載第三方模塊。從配置上來看,nginx的配置比較比較簡潔,但功能上不如apache的mod_bw模塊豐富。
Nginx下載限速