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

 更新时间:2014年12月01日 15:27:47   投稿:mdxy-dxy  
这篇文章主要介绍了Apache限制IP并发数和流量控制的方法,需要的朋友可以参考下

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

使用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

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

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限速为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模块前:

使用mod_bw.so模块后:

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

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 就可以:

#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

相关文章

  • CentOS6 配置Nginx,MySql,php-fpm开机启动的方法

    CentOS6 配置Nginx,MySql,php-fpm开机启动的方法

    这篇文章主要介绍了CentOS6 配置Nginx,MySql,php-fpm开机启动的方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • 如何使用Linux的rsync

    如何使用Linux的rsync

    rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步
    2021-06-06
  • CentOS7 下安装telnet服务的实现方法

    CentOS7 下安装telnet服务的实现方法

    这篇文章主要介绍了CentOS7 下安装telnet服务的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样功能的方法,需要的朋友可以参考下
    2017-10-10
  • Linux下Jenkins忘记密码的操作步骤

    Linux下Jenkins忘记密码的操作步骤

    这篇文章主要介绍了Linux下Jenkins忘记密码的操作步骤,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • linux系统安装git及git常用命令

    linux系统安装git及git常用命令

    这篇文章主要介绍了linux系统安装git及git常用命令,大家参考使用吧
    2014-01-01
  • 在 Linux 系统中手动滚动日志的方法

    在 Linux 系统中手动滚动日志的方法

    使用 logrotate 命令可以手动执行日志滚动的操作。本文将要介绍的就是手动进行日志滚动的方法,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-03-03
  • linux下获取当前时间的相关函数

    linux下获取当前时间的相关函数

    这篇文章主要介绍了linux下获取当前时间的相关函数,具有很好的参考价值,希望对大家有所帮助,
    2023-09-09
  • 用DNSPod和Squid打造自己的CDN全程分享

    用DNSPod和Squid打造自己的CDN全程分享

    本篇教程是顺应大家的要求而写。教程内大部分都是奶罩在为VeryCD等大型网站构建CDN时所累积的经验。在一些概念方面可能会有一些错漏,希望大家指正
    2013-04-04
  • Linux VPS备份教程 手动备份网站数据

    Linux VPS备份教程 手动备份网站数据

    老左其实也比较赞同不是所有的网站都需要采用自动备份,每天都自动备份也感觉没有必要,除非我们的网站非常的重要
    2012-09-09
  • Apache源码安装和虚拟主机配置的教程详解

    Apache源码安装和虚拟主机配置的教程详解

    这篇文章主要介绍了Apache源码安装和虚拟主机配置的教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11

最新评论