zoukankan      html  css  js  c++  java
  • Apache限制IP并发数和流量控制

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

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

    编辑httpd.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    ExtendedStatus On
    LoadModule 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.tgz
    tar zxvf mod_bw-0.7.tgz
    cd mod_bw
    /usr/local/apache2/bin/apxs -c -i mod_bw.c
    

    编辑httpd.conf配置文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    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:

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

    测试:
    使用mod_bw.so模块前:
    bw_limit
    使用mod_bw.so模块后:
    bw_limit2

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

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

    [root@vps httpd]# /etc/init.d/httpd restart
    Stopping 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]
    

    修改一下mod_bw.c 就可以:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    #ifdef APR_MAJOR_VERSION   //添加这行
    #if (APR_MAJOR_VERSION < 1)
        #define apr_atomic_inc32 apr_atomic_inc
        #define apr_atomic_dec32 apr_atomic_dec
        #define apr_atomic_add32 apr_atomic_add
        #define apr_atomic_cas32 apr_atomic_cas
        #define apr_atomic_set32 apr_atomic_set
    #endif
    #endif  //添加这行

    重新编译:

    /usr/local/apache2/bin/apxs -c -i mod_bw.c
    

    2、如果服务器没有安装apxs,可以参照以下方法安装:
    apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。

    输入命令查看是否有httpd-devel这个包,如果没有需要安装

    rpm -qa|grep httpd
    yum -y install httpd-devel
    

     https://blog.csdn.net/lgq421033770/article/details/44673237

  • 相关阅读:
    使用tensorflow深度学习识别验证码
    单线程、多线程、多进程、协程比较,以爬取新浪军事历史为例
    web开发中的安全问题
    关于无效验证码
    怎么制作免费短信轰炸机
    python2.7中关于编码,json格式的中文输出显示
    一个网址
    基于pyteseract google ocr的图形验证码识别
    python使用pyqt写带界面工具
    python使用tkinter写带界面的工具
  • 原文地址:https://www.cnblogs.com/lixiuran/p/11758142.html
Copyright © 2011-2022 走看看