西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > 开发教程 > linux教程 >

APACHE中限制IP连接数与IP并发数和流量控制

时间:2016-02-16 00:43来源: 作者: 点击:
本文总结一下APACHE中限制IP连接数与IP并发数和流量控制实现方法,如果只限制连接数据我们可以直接使用limit,如果要限制其它的需要使用其它第三方模块了。 利用Limit模块限制IP连接

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

利用Limit模块限制IP连接数

系统版本:centos6.3,APACHE版本:apache2.42(编译安装)

1.配置Limit模块

#wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2

安装:

  1. #tar jxvf mod_limitipconn-0.24.tar.bz2 
  2. #cd mod_limitipconn-0.24 
  3. #vi Makefile 

找到APXS这行,改成

  1. APXS=/usr/local/apache2/bin/apxs 
  2. #make && make install 

全局变量范例:

  1. < IfModule mod_limitipconn.c > 
  2. < Location / >    # 所有虚拟主机的/目录 
  3. MaxConnPerIP 3      # 每IP只允许3个并发连接 
  4. NoIPLimit image/*   # 对图片不做IP限制 
  5. < /Location > 
  6. < Location /mp3 >   # 所有主机的/mp3目录 
  7. MaxConnPerIP 1          # 每IP只允许一个连接请求 
  8. OnlyIPLimit audio/mpeg video     # 该限制只对视频和音频格式的文件 
  9. < /Location > 
  10. < /IfModule > 
  11. # vi /usr/local/apache2/conf/httpd.conf 
  12. -------------------- 
  13.  
  14. ExtendedStatus On   
  15. LoadModule limitipconn_module modules/mod_limitipconn.so 
  16. <IfModule mod_limitipconn.c>  
  17. <Location /> 
  18. MaxConnPerIP 6 
  19. NoIPLimit image/*  
  20. </Location> 
  21. </IfModule>  
  22. ------------------- 

2、配置webbench对网站进行压力测试:

  1. #wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz 
  2. #tar zxvf webbench-1.5.tar.gz 
  3. #cd webbench-1.5 
  4. #make && make install 

3、使用:

webbench -c 500 -t 30 http://127.0.0.1/

参数说明:-c表示并发数,-t表示时间(秒)

4、测试结果示例:

  1. Webbench - Simple Web Benchmark 1.5 
  2. Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. 
  3. Benchmarking: GET http://127.0.0.1/ 
  4. 500 clients, running 30 sec. 
  5. Speed=3230 pages/min, 11614212 bytes/sec. 
  6. Requests: 1615 susceed, 0 failed. 

Apache限制一个IP的连接数

Apache最大的优点在于它是个模块化的程序,缺乏什么样的功能就可以单独开发相应的功能模块,然后加到Apache上就可以了,项目中一个客户的平台上资源较多,很多人都用多线程下载工具下载,导致服务器负载很大,于是便想到了限制IP的连接数,如果Apache是1.x版本的,那么从http://dominia.org/djao/limitipconn.html 这里下载对应的Linux版本的(windows的没有),如果是2.x版本的,那么从http://dominia.org/djao/limitipconn2.html下载Linux的或者Windows的,如果用在Linux上,那么安装方法上面写的很清楚,如果是windows的,把下载的release目录下的mod_limitipconn.dll放到Apache的安装目录的modules目录下;

然后修改Apache的配置文件httpd.conf,这里不管Linux还是Windows都是一样的,如果是2.0首先找到 httpd.conf 中的 LoadModule status_module modules/mod_status.so,把这句话前面的#去掉,然后加入如下内容:

  1. ExtendedStatus On 
  2. LoadModule limitipconn_module modulesmod_limitipconn.dll 
  3. <IfModule mod_limitipconn.c> 
  4.  <Location /resource> 
  5.  MaxConnPerIP 3 
  6.  # exempting images from the connection limit is often a good 
  7.  # idea if your web page has lots of inline images, since these 
  8.  # pages often generate a flurry of concurrent image requests 
  9.  NoIPLimit image/* 
  10.  </Location> 
  11.  </IfModule> 

里面/resource是制定限定IP的目录,然后MaxConnPerIP是限定每个IP的并发连接数,NoIPLimit image/* 是排除resource下不限定的目录。

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

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

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

编辑httpd.conf

  1. ExtendedStatus On 
  2. LoadModule limitipconn_module modules/mod_limitipconn.so 
  3. <ifModule mod_limitipconn.c> 
  4. <location />       #对应根目录 
  5.       MaxConnPerIP 5          #最大并发数为5 
  6.       NoIPLimit image/*        #对图片不做限制 
  7. </location> 
  8. <location /test>              #对根目录下的test目录做限制 
  9.      MaxConnPerIP 2         #最大并发数为2 
  10. </location> 
  11. </ifModule> 

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

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

使用mod_bandwidth模块限制带宽

mod_bandwidth可以对IP的并发数进行控制,也可以对下载流量进行控制,也可以对某个目录的流量进行控制。安装:

  1. wget http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz 
  2. tar zxvf mod_bw-0.7.tgz 
  3. cd mod_bw 
  4. /usr/local/apache2/bin/apxs -c -i mod_bw.c 

编辑httpd.conf配置文件:

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

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

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

(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容