nginx限制流量

nginx_web發表於2012-06-13

 

 

對於提供下載的網站,肯定是要進行流量控制的,例如BBS、視訊服務,還是其它專門提供下載的網站。在nginx中我們完全可以做到限流,由Core模組提供了limit_ratelimit_rate_after命令。

 

   

 

    通過以下兩條命令來完成限制流量。

 

指令名稱:limit_rate

    能:該指令用於指定向客戶端傳輸資料的速度,速度的單位是每秒傳輸的位元組數。需要明白的一點是該限制只是針對一個連線的設定,就是說如果同時有兩個連線那麼它的速度將會是該指令設定值的2倍,

 

如果需要在server級別對某些客戶端限制速度,對於這種情況——這個指令可能並不適合,但是可設定$limit_rate變數,可以為該變數傳遞相應的值來實現,例如:

 

server {

  if ($slow) {

    set $limit_rate  4k;

  }

}

 

    當然也可以通過設定X-Accel-Limit-Rate(來自於NginxXSendfile模組)來控制由proxy_pass(來自於HttpProxyModule模組)返回的響應資料的速率,而沒有使用X-Accel-Redirect頭。

    : limit_rate speed

默 認 值: no

使用環境: http, server, location, if in location

 

    令:limit_rate_after

    能:limit_rate_after,這個命令中的“after”提示了我們,可以這樣理解“在後再限制速率為”,沒錯,就是這個意思,它的語法為:limit_rate_after time(這是官方威客上http://wiki.nginx.org/HttpCoreModule#limit_rate的語法),它的意思是以最大的速度下載time時長後,但是在實際的使用中發現命令limit_rate_after的引數是一個下載位元組量的大小值,而不是時間值,因此上面的命令“limit_rate_after 3m”解釋為:以最大的速度下載3M後。

    法:limit_rate_after size

默 認 值:limit_rate_after 1m

使用欄位:http, server, location, location中的if欄位

 

例項配置

 

    看下面的配置,這是一個視訊伺服器上的配置片斷,通過這兩條命令限制了訪問者的下載速度:

 

 

   location /download {

       limit_rate_after 3m;

       limit_rate 512k;

    }

 

   

我們看一下這兩條命令:

 

 

    limit_rate,相對於limit_rate_after命令,這個命令已經開始限速了,它的語法為:limit_rate speed,它表示限制為的速率。該指令可以用在http, server, location以及location中的if區段,沒有預設值。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27043155/viewspace-732626/,如需轉載,請註明出處,否則將追究法律責任。

相關文章