mod_limitipconn,這個是apache的一個非官方模塊,根據同一個來源ip進行并發連接控制,bw_mod,它可以根據來源ip進行帶寬限制,它們都是apache的第三方模塊。
1.下載:
????? wget ?
????? wget
2.安裝
#tar -zxvf mod_limitipconn-0.22.tar.gz
#cd mod_limitipconn-0.22
#vi makefile
修改:apxs = “/usr/local/apache2/bin/apxs” # 這里是自己apache的apxs路徑,加載模塊
或者
#/usr/local/apache2/bin/apxs -i -c -a mod_limitipconn.c? 來加載模塊
#make
#make install
#tar -xvf mod_bw-0.7.tgz
#cd mod_bw
#/usr/local/apache2/bin/apxs -i -c -a /home/kenami/mod_bw/mod_bw.c
下面用vi打開apache 的配置文件 httpd.conf
發現了以下兩行:
loadmodule limitipconn_module modules/mod_limitipconn.so
loadmodule bw_module????????? modules/mod_bw.so
3.配置
???
??????? maxconnperip 3 #限制的線程數
??????? noiplimit index.htm #對此文件不做限制
???
在虛擬主機配置文件下面加上:
??? bandwidthmodule on?
??? forcebandwidthmodule on
??? bandwidth all 10000 #限速10k
??? minbandwidth all -1
配置參數說明如下:
a.? bandwidthmodule? on|off
//是否開啟mod_bw的帶寬限制功能。
b.? bandwidth? [from]? [bytes/s]
??? 設置指定客戶機最大帶寬,0表示不限制
?? bandwidth u:[user-agent] [bytes/s]
c.? minbandwidth? [from]? [bytes/s]
??? 設置指定客戶機帶寬的最小值,為0表示每個客戶端帶寬最大為256bytes/s,為-1表示最大為bandwith的值
d.? largefilelimit? [type]? [minimum size]? [bytes/s]
??? 設置訪問超出特定大小的某種文件的最大帶寬,文件類型大小單位為kbytes
e.?? maxconnection [from] [max]
??? 設置指定客戶機的最大并發連接數
f.?? forcebandwidthmodule [on|off]
?? 默認bw模塊將應用所有請求,on可設置過濾類型
關于from,即客戶端來源可分以下幾種情況:
ip指定單一主機
192.168.1.22
指定網段
192.168.1.0/24或
192.168.1.0/255.255.255.0
域名單一主機
client1.jb51.net
域名指定范圍
.jb51.net
所有客戶端
all
以上配置既可以針對所有客戶端,也可以對某個虛擬主機進行配置
實例一:
bandwidthmodule on
bandwidth all 307200
bandwidth 192.168.1.2 102400
bandwidth “u:^mozilla/5(.*)” 102400
bandwidth “u:wget” 204800
forcebandwidthmodule on
largefilelimit .avi 600 204800
maxconnection all 100
maxconnnection 192.168.1.2 5
以上的配置含義:
開啟mod_bw, 限制所有文件類型也開啟了
所有客戶端最大帶寬為300k,最大并發連接為100
192.168.1.2的最大帶寬為100k,最大并發連接為5
使用firefox的客戶端最大帶寬為100k
使用wget的客戶端最大帶寬為200k
對超過600k的avi格式的文件最大帶寬為200kbyte/s
實例二:
????? bandwidthmodule on
????? forcebandwidthmodule on
????? largefilelimit .avi 1 20000
????? largefilelimit .mpg 1 20000
????? servername
該實例對虛擬主機進行了限制,指定的文件類型avi和mpg最大帶寬為20k,forcebandwidthmodule on必須有。
實例三:
????? bandwidthmodule on
????? addoutputfilterbytype mod_bw text/html text/plain
????? bandwidth all 5000
????? servername