Apache限制IP并发数和流量控制

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

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.confapache

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配置文件:dom

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测试

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

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

[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

二、若是服务器没有安装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

相关文章
相关标签/搜索