- #ifdef APR_MAJOR_VERSION //新增行
- #if (APR_MAJOR_VERSION < 1)
- #define apr_atomic_inc32 apr_atomic_inc
- #define apr_atomic_dec32 apr_atomic_dec
- #define apr_atomic_add32 apr_atomic_add
- #define apr_atomic_cas32 apr_atomic_cas
- #define apr_atomic_set32 apr_atomic_set
- #endif
- #endif //新增行
運行
# /usr/local/apache/bin/apxs -c -i -a mod_bw.c
III. 配置mod_bw 打開httpd.conf.
- BandWidthModule On
- ForceBandWidthModule On #這個沒加上之前試了幾次發(fā)現(xiàn)不起作用
- BandWidth all 102400
- MinBandWidth all 51200
- MaxConnection all 50
mod_bw 是一個apche的第三方插件,可以實現(xiàn)即時帶寬控制,連接數(shù)控制,對于需要對站點限速的朋友來講是個不錯的選擇,下面將幾個具體的配置項做以說明:
先寫一個典型的配置例子:
- BandWidthModule On
- ForceBandWidthModule On
- BandWidth all 102400 #限制為100K
- MaxConnection all 100 #限制為100個連接數(shù)
可寫在全局配置和單個虛擬主機中。
IV. Configuration Directives 1 - BandWidthModule [On|Off] 這個 module 預(yù)設(shè)是關(guān)閉的,要將他開啟才能夠使用。
Example:
BandWidthModule On 2 - ForceBandWidthModule [On|Off]
這個 module 預(yù)設(shè)不會過濾每個需求。
如果您開啟他,他將處理過濾每個需求。
Example :
(正常的使用下,僅會過濾 text/html test/plain)
AddOutputFilterByType MOD_BW text/html text/plain
(開啟的狀況下)
2 - ForceBandWidthModule On 3 - BandWidth [From] [bytes/s] 這邊有兩個參數(shù)。
From 是限制來源的位置,也就是該位置受限制。他可以是完整的 hostname、網(wǎng)域名稱或 IP??纱钆湔谡质褂茫?192.168.0.0/24 or 192.168.0.0/255.255.255.0 。
另一個參數(shù)是限制的速率,以 bytes 每秒為單位;假如為 0,則不受限制。
Example :
BandWidth localhost 10240
BandWidth 192.168.218.5 0
( 依照設(shè)定的先后順序為排序準(zhǔn)則。Order is relevant. First entries have precedence )
4 - MinBandWidth [From] [bytes/s] 這邊有兩個參數(shù)。
From 是限制來源的位置,也就是該位置受限制。他可以是完整的 hostname、網(wǎng)域名稱或 IP??纱钆湔谡质褂?,例如 192.168.0.0/24 or 192.168.0.0/255.255.255.0 。
另一個參數(shù)每個連線限制的最小速率,以 bytes/s 為單位,-1 代表無限制。
Examples :
BandWidth all 102400
MinBandWidth all 50000
The example above, will have a top speed of 100kb for the 1? client. If more clients come, it will be splitted accordingly but
everyone will have at least 50kb (even if you have 50 clients)
BandWidth all 50000
MinBandWidth all -1
上面的例子說明每個連線有 50kb 的速度(不限制最小速度)
5 - LargeFileLimit [Type] [Minimum Size] [bytes/s] 顧名思義,這設(shè)定是專門用來限制大型檔案的。
Type 是指副檔名,可以使用 * 代表全部。也可使用 .tgz 、 .avi 等。
Minimun Size 單位是 kbytes/s,只要超過這個 Size 就被規(guī)范在這個設(shè)定的限速中。
最后一個參數(shù)就是被限制的速率囉!
Example :
LargeFileLimit .avi 500 10240
This limits .avi files over (or equal to) 500kb to 10kbytes/s
6 - BandWidthPacket [Size] 可能您不需要去設(shè)定這個參數(shù)!
預(yù)設(shè)值為 8192,適用于任何速度。
這個設(shè)定必須介于 1024 至 131072。
小的封包將使得速度變慢,且更耗費系統(tǒng)效能;相反亦是。
7 - BandWidthError [Error] 這個選項是用來自訂個人化錯誤訊息的。
在預(yù)設(shè)的情況下,超過最大連線時,這個 module 將會丟出 503 HTTP_SERVICE_UNAVAILABLE 回應(yīng)。
對于大部分的人來說,他們會困擾著錯誤訊息,不知道為什么會這樣。
你可以自訂一個錯誤訊息的頁面,去解釋在什么情況下會發(fā)生這種問題。
但有時候錯誤號碼 503 是不適用這個地方的。
所以你可以自訂一個錯誤號碼從 300 至 599。
( 有關(guān) HTTP 錯誤訊息可參考下列 Reference: HTTP Protocol Error Codes)
在自訂錯誤編碼時請注意,要使用尚未被定義的號碼!
測試的時候,我們使用錯誤號碼 510(510尚未被定義)
And Example, with Personalized Error Page :
ErrorDocument 510 /errors/maxconexceeded.html
BandWidthError 510
注意:有時候自訂錯誤編碼可能會有問題。但在大部分的情況下,作者已修復(fù)。
8 - MaxConnection [From] [Max] 這個設(shè)定有兩個參數(shù)。
From 是限制來源的位置,也就是該位置受限制。他可以是完整的 hostname、網(wǎng)域名稱或 IP??纱钆湔谡质褂茫?192.168.0.0/24 or 192.168.0.0/255.255.255.0 。
第二個參數(shù)是設(shè)定最大的連線數(shù)量。假如連線超過這個數(shù)量,apache 將丟出 503 Service Temporarily Unavailable 的訊息。
在設(shè)定這個參數(shù)之前,需先指定 BandWidth 值。
他不需要設(shè)定的太低,您可以設(shè)定為無限制。
Example :
BandWidth all 0
MaxConnection all 20
or
BandWidth all 0
BandWidth 192.168.0.0/24 10240
MaxConnection all 20
MaxConnection 192.168.0.0/24 5
V. 示范區(qū): 這個 module 設(shè)定可安插在 virtual host 或 directory,看你要設(shè)定在 httpd.conf 或 .htaccess 皆可!
不過使用 .htaccess 別忘了把 httpd.conf 里的 下的 AllowOverride 設(shè)為 ALL 。
1. 限制每個連線為 10kb/s
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 10240
MinBandwidth all -1
Servername www.example.com
2. 限制每一個連線為 100 kb/s,最小的速率為 50kb/s,且當(dāng)檔案超過 500 kb 即限速為 50kb/s
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 1024000
MinBandwidth all 50000
LargeFileLimit * 500 50000
Servername www.example.com
3. 限制副檔名為 avi & mpeg 的檔案為 20 kb/s
BandwidthModule On
ForceBandWidthModule On
LargeFileLimit .avi 1 20000
LargeFileLimit .mpg 1 20000
Servername www.example.com
4. 當(dāng)檔案(mime)為 text 格式,限制速度為 5kb/s
BandwidthModule On
AddOutputFilterByType MOD_BW text/html text/plain
Bandwidth all 5000
Servername www.example.com