欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx帶寬控制(限速模塊使用)

 更新時間:2015年03月26日 10:41:16   投稿:junjie  
這篇文章主要介紹了Nginx帶寬控制(限速模塊使用),本文講解了使用limit_rate和limit_rate_aft以及l(fā)imit_conn實現(xiàn)帶寬控制的例子,需要的朋友可以參考下

有個老項目,通過 Squid 提供文件下載功能,利用 delay_parameters 實現(xiàn)帶寬控制,問題是我玩不轉(zhuǎn) Squid,于是盤算著是不是能在 Nginx 里找到類似的功能。


好消息是 Nginx 提供了 limit_rate limit_rate_after,舉個例子來說明一下:

復(fù)制代碼 代碼如下:

location /download/ {
    limit_rate_after 500k;
    limit_rate 50k;
}

大概意思是:用戶下載達到 500k 后,便控制其速度在 50k 以內(nèi)。

壞消息是此控制是針對單個連接而言的。換言之,只能限制單個連接的帶寬,不能限制總帶寬。不過使用limit_conn 模塊的話,可以在一定程度上緩解問題:

復(fù)制代碼 代碼如下:

limit_conn_zone $server_name zone=servers:10m;

server {
    location /download/ {
        limit_conn servers 1000;
        limit_rate_after 500k;
        limit_rate 50k;
    }
}

通過 limit_conn 限制了并發(fā)連接數(shù),于是也就限制了總帶寬。可惜這個解決方式并不完美,大家可以設(shè)想如下的例子:1000 個用戶能夠同時以 50k 的速度下載;那么在總帶寬不變的情況下,2000 個用戶是否能夠同時以 25k 的速度下載?從業(yè)務(wù)的角度看,答案自然是肯定的,可實際上 limit_conn 和 limit_rate 不夠靈活,無法簡單實現(xiàn)此類邏輯。

當然,問題肯定有辦法解決。比如使用第三方模塊:limit_speed;還可以使用 Linux 內(nèi)置的 TC 命令。limit_speed 比較簡單,不多說了,接下來我們就看看 TC 的用法吧:

復(fù)制代碼 代碼如下:

shell> tc qdisc add dev eth0 root handle 1: htb default 10
shell> tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit
shell> tc filter add dev eth0 protocol ip parent 1:0 prio 1 \
       u32 match ip dport 80 0xffff flowid 1:1


TC 復(fù)雜的讓人發(fā)瘋,請參考:Linux Advanced Routing & Traffic Control HOWTO。

本文介紹了多個 Nginx 限制訪問方面的模塊,實際上還有一個 limit_req 模塊也超贊,雖然和本文關(guān)系不大,但建議大家了解,具體可以參考「nginx limit_req限速設(shè)置」。

相關(guān)文章

最新評論