1. 程式人生 > >Nginx下載限速

Nginx下載限速

serve 進行 pre tpc core parent none flow 狀態

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下載限速