linux,apache如何限制下载速度

目前各种多线程下载工具泛滥,这对提供部分下载功能的网站来说是个比较头疼的问题,由于多线程下载会给服务器带来巨大的负载压力,而且可能会对整个站点产生影响,使其不能正常访问。那么有没有什么方法可以解决这些问题呢?答案是肯定的。目前国内大部分站点都是基于LAMP(Linux+Apache+Mysql+php)架构的,Apache是一个开源的,功能强大,稳定,使用量最大的WEB服务器。Apache是模块化开发的,可以根据需要增加各种功能模块,这里我给大家介绍两个模块,一个是mod_limitipconn,另一个是bw_mod。

下面说一下它们的安装配置,它们的下载地址是:
mod_limitipconn:http://dominia.org/djao/limitipconn.html
bw_mod:http://www.ivn.cl/

一,mod_limitipconn

mod_limitipconn,这是一个apache非官方模块,根据同一个来源IP进行并发连接控制,它是使用ExtendedStatus On的形式,工作在应用层。当同一个源IP的连接达到限制的时候,apache对get请求发送:HTTP/1.1 503 Service Temporarily Unavailable,使用户不能进行多线程下载,但并不能阻止攻击。

目前最新版本是0.44,支持apache2.0
tar -zxvf mod_limitipconn-0.44.tar.gz
cd mod_limitipconn-0.44

安装:在进行安装前要确认apxs的位置,要试用wheries apxs命令查找apxs文件的位置。可以通过两种方法进行安装

一种方法是修改mod_limitipconn的Makefile的文件,确保Makefile文件中APXS=指向正确apxs文件。

然后在make ; make install

另一种方法是直接用apxs命令进行安装编译,如:
/usr/local/apache/bin/apxs -c -i -a mod_limitipconn.c

修改apache的配置文件httpd.conf

1,我安装的时候没发现这个ExtendeStatus On  在任意一行加入 这句话

2.确认LoadModule limitipconn_module /usr/lib/apache/mod_limitipconn.so这个选项存在;

3.在httpd.conf进行mod_limitipconn配置,配置示例如下:
引用:
<IfModule mod_limitipconn.c>
<Location /> #要限制的目录,此处表示的根目录
MaxConnPerIP 3 #要限制每个IP的并发连接数,此处为3
NoIPLimit image/* #对图片文件夹不做IP限制
</Location>
<Location /mp3> #要限制的目录,此处表示/mp3目录
MaxConnPerIP 1 #限制每个IP的并发连接数为1个
OnlyIPLimit audio/mpeg video #该限制只对视频和音频格式的文件
</Location>
</IfModule>