ChinaUnix首页 > 精华文章 > Web服务器 > 正文

[精华] 使用mod_limitipconn.c来限制apache的并发数


http://www.chinaunix.net 作者:南非蜘蛛  发表于:2004-05-01 09:28:22
发表评论】 【查看原文】 【Web服务器讨论区】【关闭

摘要
  本文介绍通过mod_limitipconn模块来限制apache的并发连接数的详细方法。

--------------------------------------------------------------------------------
By 风过留枫, 出处:Linux技术中坚站 冷风


  下载mod_limitipconn.c


  http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz
  http://dominia.org/djao/limit/mod_limitipconn-0.04-1.i386.rpm
    (proxy client detection feature not enabled) 
  http://dominia.org/djao/limit/mod_limitipconn-0.04-1.src.rpm


   
  我用的是tar包下载的是mod_limitipconn-0.04.tar.gz,(该模块已经可以支持apache2)在服务器上执行# wget http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz 下载到本地

  然后执行下面的命令编译安装.我的apache位于/usr/local/apache目录

  解压缩:


  [root@ns chenlf]# tar zxvf mod_limitipconn-0.04.tar.gz 
    mod_limitipconn-0.04/
    mod_limitipconn-0.04/Makefile
    mod_limitipconn-0.04/README
    mod_limitipconn-0.04/apachesrc.diff
    mod_limitipconn-0.04/mod_limitipconn.c
    mod_limitipconn-0.04/ChangeLog



  编译安装:


  [root@ns chenlf]# cd mod_limitipconn-0.04
  [root@ns mod_limitipconn-0.04]# ls
    apachesrc.diff   ChangeLog   Makefile 
    mod_limitipconn.c  README
  [root@ns mod_limitipconn-0.04]
    # /usr/local/apache/bin/apxs -c -i -a mod_limitipconn.c 
    gcc -DLINUX=22 -I/usr/include/db1 -fpic -DSHARED_MODULE -I
      /usr/local/apache/include -c mod_limitipconn.c
    gcc -shared -o mod_limitipconn.so mod_limitipconn.o 
      [activating module `limitipconn' in /usr/local
      /apache/conf/httpd.conf]
    cp mod_limitipconn.so /usr/local/apache/libexec/mod_limitipconn.so
    chmod 755 /usr/local/apache/libexec/mod_limitipconn.so
    cp /usr/local/apache/conf/httpd.conf 
      /usr/local/apache/conf/httpd.conf.bak
    cp /usr/local/apache/conf/httpd.conf.new 
      /usr/local/apache/conf/httpd.conf
    rm /usr/local/apache/conf/httpd.conf.new



  修改配置文件:

  1全局控制:

  在httpd.conf加上以下几行:


  < IfModule mod_limitipconn.c >;
      < Location / >;   # 所有虚拟主机的/目录 
          MaxConnPerIP 3     # 每IP只允许3个并发连接
          NoIPLimit image/*  # 对图片不做IP限制
    < /Location >;

  < Location /mp3 >;  # 所有主机的/mp3目录
    MaxConnPerIP 1         # 每IP只允许一个连接请求    
    OnlyIPLimit audio/mpeg video    # 该限制只对视频和音频格式的文件
    < /Location >;
< /IfModule >;



  2 局部限制,你也可以在虚拟主机的配置文件里设置IP限制,方法是完全一样:


  < VirtualHost xx.xxx.xx.xx >;
    ServerAdmin chenlf@chinalinuxpub.com
    DocumentRoot /home/my
    ServerName www.my.com
  < IfModule mod_limitipconn.c >;
      < Location / >;    # 所有虚拟主机的/目录 
      MaxConnPerIP 5         # 每IP只允许3个并发连接
          NoIPLimit image/*      # 对图片不做IP限制
      < /Location >;
      < Location /mp3 >;    # 所有主机的/mp3目录
      MaxConnPerIP 2         # 每IP只允许一个连接请求    
      OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件
      < /Location >;
  < /IfModule >;
  ErrorLog /home/my/logs/error_log
  CustomLog /home/my/logs/access_log common
< /VirtualHost >;



  3 此外必须将apache的ExtendedStatus设置为ON.在httpd.conf找到


  # ExtendedStatus On



  去掉前面的注释即可

  好了,全部配置结束,重起apache就可以生效了
   
(完)



 garfy 回复于:2003-05-15 12:49:37

用apache 1.3.27编译不过,如下:
#../bin/apxs -c -i -a mod_limitipconn.c
apxs:Error: Sorry, no DSO support for Apache available
apxs:Error: under your platform. Make sure the Apache
apxs:Error: module mod_so is compiled into your server
apxs:Error: binary `/server/apache/bin/httpd'


安装http://dominia.org/djao/limitipconn.html也不行
# make
apxs -c    mod_limitipconn.c
apxs:No such file or directory
*** Error code 1
Stop in /usr/local/apache/mod_limitipconn-0.04.

烦请蜘蛛指正!


 zhangweibo 回复于:2003-07-26 20:15:58

    # /usr/local/apache/bin/apxs -c -i -a mod_limitipconn.c 
    gcc -DLINUX=22 -I/usr/include/db1 -fpic -DSHARED_MODULE -I 
      /usr/local/apache/include -c mod_limitipconn.c 
    gcc -shared -o mod_limitipconn.so mod_limitipconn.o 
      [activating module `limitipconn' in /usr/local 
      /apache/conf/httpd.conf] 

以上命令是一次性执行吗?哪儿是回车?


 郝君 回复于:2003-08-19 02:07:25

8dong ,ye yao ding


 bon 回复于:2004-05-01 09:28:22

强,试试先




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=3129
转载请注明作者名及原文出处