当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Apache限制IP并发数和流量控制的方法

    栏目:Linux/apache问题 时间:2018-10-09 13:43

    这篇文章主要介绍了Apache限制IP并发数和流量控制的方法,需要的朋友可以参考下

    本文章来给各位同学总结一下APACHE中限制IP连接数与IP并发数和流量控制实现方法,如果只限制连接数据我们可以直接使用limit,如果要限制其它的需要使用其它第三方模块了

    使用mod_limitipconn模块限制IP并发连接数
    安装:

    wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2tar jxvf mod_limitipconn-0.24.tar.bz2cd mod_limitipconn-0.24/usr/local/apache2/bin/apxs -c -i mod_limitipconn.c

    编辑httpd.conf

    ExtendedStatus OnLoadModule limitipconn_module modules/mod_limitipconn.so <ifModule mod_limitipconn.c><location />                       #对应根目录   MaxConnPerIP 5                 #最大并发数为5   NoIPLimit image/*                #对图片不做限制</location><location /test>                    #对根目录下的test目录做限制   MaxConnPerIP 2                  #最大并发数为2</location></ifModule>

    如果想限制虚拟主机的ip并发连接数,可以修改extra/httpd-vhost.conf把 IfModule mod_limitipconn.c 这一段复制到Virtualhost中就可以了。

    测试:
    测试很简单,把最大连接数调小一点,随便一个浏览器访问页面,然后按着F5,让页面不断刷新,一下就可以弹出503错误

    使用mod_bandwidth模块限制带宽
    mod_bandwidth可以对IP的并发数进行控制,也可以对下载流量进行控制,也可以对某个目录的流量进行控制。
    安装:

    wget http://bwmod.sourceforge.net/files/mod_bw-0.7.tgztar zxvf mod_bw-0.7.tgzcd mod_bw/usr/local/apache2/bin/apxs -c -i mod_bw.c

    编辑httpd.conf配置文件:

    LoadModule bw_module modules/mod_bw.so <virtualHost *:80>    ServerName vhost1.cszhi.com    DocumentRoot  /var/www/vhost1    BandwidthModule On    ForceBandWidthModule On    Bandwidth all 1024000    MinBandwidth all 50000     #每个客户端最高速度可达50KB    LargeFileLimit * 500 50000    MaxConnection all 6</virtualHost>

    其它参数事例说明,详细的见源码包里的mod_bw.txt:

    BandWidth localhost 0                   #对localhost不限速BandWidth 192.168.1.5 102400            #对192.168.1.5限速为100KBBandWidth “u:^Mozilla(.*)” 10240       #用mozilla时限速10KBBandWidth “u:wget” 102400           #如果用wget下载时限速10KBMinBandWidth all -1                   #保证每个客户端最高速度可达10KBLargeFileLimit .jpg 100 10240           #jpg文件超过100KB,限速10KB#下面的510挺好,如果不设置,apache自己会报错,就根报404差不多,页面非常的丑ErrorDocument 510 /exceed_speed.htmlBandWidthError 510MaxConnection all 10                    #所有ip最大连接数为10MaxConnection 192.168.1.5 5             #192.168.1.5最大连接数为5 

    测试:
    使用mod_bw.so模块前:

    使用mod_bw.so模块后:

    安装过程中可能出现的问题:

    1、添加完mod_bw.so模块,重启apache时出现错误:

    [root@vps httpd]# /etc/init.d/httpd restartStopping httpd:                      [FAILED]Starting httpd: httpd: Syntax error on line 203 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_bw.so into server: /etc/httpd/modules/mod_bw.so: undefined symbol: apr_atomic_cas                              [FAILED]