返回列表 发帖

apache2.2.8 使用 mod_limitipconn 限制用户下载使用线程数目

网站如果提供一些文件下载,最头疼问题,可能就是用户使用多线程下载,

这样很快耗尽服务器资源,特别是对于一些小网站,许多线程同时访问请求,

一定会对服务器造成一定得影响。

这里我演示一个 可以 限制下载使用的线程数目,只适合于apache服务器,呵呵。

首先测试一下,一个test.avi 如果在服务器被下载的情况,在没有使用限制ip并发连接数,

也就是使用下载工具没有限制线程数量。

我现在服务器上有一个 test.avi 文件,再没有任何限制之下,我们使用迅雷下载

并且设置 5 个线程进行下载。看到了吧, 5个线程都正常请求,在同时下载文件。

好,我先把下载文件 暂停了,

下面我们来安装 限制下载使用的线程(也就是限制同一个ip并发数量)
我这里使用 apache 2.2.8版本

1. 先下载 mod-limitipconn
在http://dominia.org/djao/limitipconn2.html上下载对应的版本,我下载的是for apache 2.2的版本(mod-limitipconn-0.23.tar.bz2)。

   下载方面,我也会在文章最后提供下载,我现在把它传进Linux下。

2. 安装
  1. # tar xjvf mod_limitipconn-0.23.tar.bz2
  2. mod_limitipconn-0.23/
  3. mod_limitipconn-0.23/Makefile
  4. mod_limitipconn-0.23/mod_limitipconn.c
  5. mod_limitipconn-0.23/README
  6. mod_limitipconn-0.23/ChangeLog
  7. mod_limitipconn-0.23/INSTALL
  8. mod_limitipconn-0.23/LICENSE

  9. # cd mod_limitipconn-0.23
复制代码


这里注意路径,也就是你自己apache安装的路径。

# /usr/local/apache2/bin/apxs -c -i -a mod_limitipconn.c

该步骤会自动将mod_limitipconn.so编译到apache对应的modules目录中,

还会在httpd.conf文件中自动添加loadmodules语句

最后 修改httpd.conf

vi /etc/httpd.conf

我把下面的修改信息 添加到配置文件最后面。

  1. ExtendedStatus On
  2. <IfModule limitipconn_module>
  3.        <Location />
  4.        MaxConnPerIP 3
  5.        NoIPLimit image/*
  6.        </Location>
  7.        <Location /mp3>
  8.        MaxConnPerIP 1
  9.        OnlyIPLimit audio/mpeg video
  10.        </Location>
  11. </IfModule>
复制代码


最后保存退出。

重启apache

  1. [root@localhost /]# /usr/local/apache2/bin/apachectl stop
  2. [root@localhost /]# /usr/local/apache2/bin/apachectl start
复制代码


接着再使用迅雷继续下载刚才的视频文件,观察线程链接情况。

可以看到 5个线程中,有2个线程是不能读取数据的,只有3个线程可以进行连接读取数据。

MaxConnPerIP 3   这个就是配置文件中 所限制的 ip并发连接数目,也就是

我们进行下载允许的线程连接数目

返回列表