1. 程式人生 > >nginx限制連線數和下載速度

nginx限制連線數和下載速度

有時候為了限流,我們可以在nginx的server中使用limit_zone設定一個限制域,比如

 limit_zone zone1 $binary_remote_addr 10m

zone1為限制域的名稱,$binary_remote_addr為客戶端ip的二進位制形式,這種方式比較節約空間,10m是此限制域的總大小。接著在location中配置limit_conn,限制單個使用者最多連線數,比如

limit_conn zone1 10
把使用者連線限制在zone1,最多連線數為10,每個連線的最大速率為1Mbit(zonesize/limit_conn )。

為了防止使用者大併發下載圖片或視訊等資源導致我們伺服器頻寬不夠用,我們可以使用nginx的limit_rate_after和limit_rate限制下載速度,比如

location ^~ /videos/ {
    ...
    limit_rate_after 1m;
    limit_rate 150k;
    ...
}
limit_rate_after 1m表示使用者的某個連線下載到1m後才開始限制,limit_rate表示下載的最大速度。這種情況下還得使用上面的配置來限制連線數,否則如果使用者發起100個連線,那麼總下載速度是150k*100,單個使用者佔用的頻寬還是很大。