为apache添加每个用户(每ip)的链接限制...

首先感谢hunreal的技术支持

1.构建过程说明

进行ip链接限制利用了apache的module—>mod_limitipconn
具体网址:http://dominia.org/djao/limitipconn.html
apache的modyle查询网址:http://modules.apache.org
系统说明:redhat ad server2.1 apache1.3.27

2.构建过程

构建过程是基于apache启用dso(dynamic shared objects )模式.
也就是你在编译apache的时候加入了–enable-module=so这个参数
构建的时候你无需停止你的apache服务…这个就是dso的方便之处:)
为了便于理解
这里把apache安装的目录叫做/apache-root
apache的源码目录叫做/apache-src

把下裁到的mod_limitipconn-0.04.tar.gz解压到一个目录

tar -zvxf mod_limitipconn-0.04.tar.gz

这样mod就被解压到它所在地目录了…

利用apxs把mod_limitconn.c编译成so为后缀的模块,并由程序自动修改apache的conf和cp模块到/apache-root/libexec,并设置正确权限(全自动完成)

cd mod_limitipconn-0.04
/apache-root/bin/apxs -i -a -c mod_limitconn.c

利用phpinfo();函数查看apache当前的mod情况…(用vi编辑一个只有<? phpinfo(); ?>的php)

如果没有mod_status那么手动增加
增加方法如下:
为apache增加server-status的支持…

cd /apache-src/src/modules/standard /apache-root/bin/apxs -i -a -c mod_status.c
注:一般都有mod_status了…:slight_smile:所以上面步骤可选…

修改apache的配置文件,配置文件在/apache-root/conf/httpd.conf

检查里面是否有下面的句子

LoadModule limitipconn_module libexec/mod_limitipconn.so
#LoadModule status_module      libexec/mod_status.so  //手动增加mod_模块要加这行
AddModule mod_limitipconn.c
#AddModule mod_status.c   //手动增加mod_模块要加这行

并且

ExtendedStatus On[/code]段要为[b]on[/b]的设置,默认是off

还要在httpd.conf的最后加入[code]
##############
#new add conf#
##############
<IfModule mod_limitipconn.c>
    <Location />
                MaxConnPerIP 6
        # exempting images from the connection limit is often a good
        # idea if your web page has lots of inline images, since these
        # pages often generate a flurry of concurrent image requests
       NoIPLimit image/*      //image文件不受限制...包括gif,jpg等...
    </Location>

#    <Location /mp3>
#       MaxConnPerIP 1
#       # In this case, all MIME types other than audio/mpeg and video*
#       # are exempt from the limit check
#       OnlyIPLimit audio/mpeg video
#    </Location>
#</IfModule>
##################
#new add conf end#
##################

MaxConnPerIP 6说明限制每个ip为6个链接…

确认conf是不是正确

/apache-root/bin/apachectl configtest
restart apache

/apache-root/bin/apachectl restart

自己想个办法测试了…:slight_smile:
更多信息查看官方网站的介绍…:slight_smile: