目前各种多线程下载工具泛滥,这对提供部分下载功能的网站来说是个比较头疼的问题,由于多线程下载会给服务器带来巨大的负载压力,而且可能会对整个站点产生影响,使其不能正常访问。那么有没有什么方法可以解决这些问题呢?答案是肯定的。目前国内大部分站点都是基于LAMP(Linux+Apache+Mysql+php)架构的,Apache是一个开源的,功能强大,稳定,使用量最大的WEB服务器。Apache是模块化开发的,可以根据需要增加各种功能模块,这里我给大家bw_mod。
Bw_mod,它可以根据来源IP进行带宽限制。
下面说一下它的安装配置,它的下载地址是:
bw_mod:http://apache.ivn.cl/
下载:wget http://apache.ivn.cl/files/source/mod_bw-0.7.tgz
解压:tar zxvf bw-0.7.tgz
安装:通过whereis apxs命令找到apxs命令的位置,如apxs的位置是:/usr/local/apache/bin/apxs,那么我们就可以通过:
/opt/apache/bin/apxs –c –i –a命令进行安装。
#/opt/apache/bin/apxs -i -a -c bw_mod-0.6.c
修改Apache的配置文件httpd.conf。
1.确认LoadModule bw_module modules/mod_bw.so选项已经存在。
2.配置示例:
BandWidthModule On #启用bw_mod
BandWidth all 102400 #最高为为100kB
MinBandWidth all 51200 #最低为50KB
MaxConnection all 3 #所有客户端最多3个连接
LargeFileLimit .rar 30 23000 #限制所有大于30K的后缀名为.rar的文件的
速率为23000字节/秒,即23K/秒
3.重启Apache
以上只说了一下这个模块的安装和简单的配置,更具体的配置请看这个模块的说明文件。
windows 应用
先去该网站下载所需的modules档案 (有*nix和Windows版本)
Ivan Barrera A. (Bruce)网站 (http://www.ivn.cl/apache/#bandwidth)
官方文档 (http://www.ivn.cl/apache/bw_mod-0.6.txt)
接着打开 httpd.conf 此档
在任何一处空白列中,加入以下那行
LoadModule bw_module modules/bw_mod-2.0.54.dll
(如果你有改档名,上面的 bw_mod-2.0.54.dll 也须更改成相同档名)
再加入以下这行,启动modules (不加此行,预设值是不启动 disabled)
BandWidthModule On
例一:
BandWidth localhost 10240
BandWidth 192.168.218.5 0
第一行是说,限制 localhost 位置,无论下载多少个档案,下载速度总合最高只有10KB
第二行是说, 192.168.1.2 这个IP位址,无论下载多少个档案,下载速度总合最高无限制
(1KB=1024 , 0 即是无限制)
例二:
BandWidth all 10240
MinBandWidth all 5120
这个例子是说
限制所有IP位置,只有一个下载时,最高只有10KB的速度
如果有多个下载时,最小下载单档的速度是5KB
则:
下载1个档案 速度为10K 总合下载速度为10K
下载5个档案 速度各为5K 总合下载速度为25K
例三:
LargeFileLimit .avi 500 10240
副档名为avi的档案 且 档案大小 大於或等於500KB
下载的速度限制最高为10KB
(这里是多人平分那10KB的速度喔! 1人下载有10KB,10人下载只有1KB)