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

 更新时间:2016年1月28日 00:50  点击:1386

 

利用Limit模块限制IP连接数

系统版本:centos6.3

APACHE版本:apache2.42(编译安装)

1.配置Limit模块

#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

#vi Makefile

找到APXS这行,改成

APXS=/usr/local/apache2/bin/apxs

#make && make install

全局变量范例:

< IfModule mod_limitipconn.c >

< Location / >    # 所有虚拟主机的/目录

MaxConnPerIP 3      # 每IP只允许3个并发连接

NoIPLimit image/*   # 对图片不做IP限制

< /Location >

< Location /mp3 >   # 所有主机的/mp3目录

MaxConnPerIP 1          # 每IP只允许一个连接请求

OnlyIPLimit audio/mpeg video     # 该限制只对视频和音频格式的文件

< /Location >

< /IfModule >

# vi /usr/local/apache2/conf/httpd.conf

--------------------

 

ExtendedStatus On  

LoadModule limitipconn_module modules/mod_limitipconn.so

<IfModule mod_limitipconn.c> 

<Location />

MaxConnPerIP 6

NoIPLimit image/* 

</Location>

</IfModule> 

-------------------

 

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

#wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz

#tar zxvf webbench-1.5.tar.gz

#cd webbench-1.5

#make && make install

 

3、使用:

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

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

 

4、测试结果示例:

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

 

Benchmarking: GET http://127.0.0.1/

500 clients, running 30 sec.

Speed=3230 pages/min, 11614212 bytes/sec.

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,把这句话前面的#去掉,然后加入

如下内容

ExtendedStatus On

LoadModule limitipconn_module modulesmod_limitipconn.dll
<IfModule mod_limitipconn.c>
 <Location /resource>
 MaxConnPerIP 3
 # exempting images from the connection limit is often a good
 # idea if your web page has lots of inline images, since these
 # pages often generate a flurry of concurrent image requests
 NoIPLimit image/*
 </Location>
 </IfModule>

里面/resource是制定限定IP的目录,然后MaxConnPerIP是限定每个IP的并发连接数,NoIPLimit

image/* 是排除resource下不限定的目录。


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

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     

[!--infotagslink--]

相关文章

  • postgresql数据库连接数和状态查询操作

    这篇文章主要介绍了postgresql数据库连接数和状态查询操作,具有很好的参考价值,对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • MySQL正确修改最大连接数的3种方案

    这篇文章主要给大家介绍了关于MySQL正确修改最大连接数的3种方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-12
  • PDO连接数据报错could not find driver解决办法

    PDO连接数据报错could not find driver,连接mysql 5. 在PHP的默认设置中,只打开了php_pdo 模块, 没有打开php_pdo_mysql模块.所以才会出现找不到驱动程序的错误....2016-11-25
  • postgres 连接数查看与设置操作

    这篇文章主要介绍了postgres 连接数查看与设置操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31
  • IP安全策略限制IP进入远程桌面设置方法

    有时候为了安全,很多时候服务器被攻下后,黑客会远程登录桌面,如果我们限制了ip的远程登录限制,这样就更安全了。...2016-01-27
  • php中使用sql server验证进行连接数据库

    当您连接到 SQL Server 时,SQL Server Driver for PHP 支持 SQL Server 身份验证。 在使用 SQL Server 身份验证连接到 SQL Server 时必须考虑以下几点: 必须对服务...2016-11-25
  • 总结MySQL修改最大连接数的两个方式

    最大连接数是可以通过mysql进行修改的,mysql数据库修改最大连接数常用有两种方法,今天我们分析一下这两种方法之间的特点和区别,以便我们能更好的去维护mysql。下面我们来看一下mysql修改最大连接数的方法,希望文章能够帮助到各位朋友。...2016-08-23
  • Nginx服务器中限制连接数与限制请求的模块配置教程

    这篇文章主要介绍了Nginx服务器中限制连接数与限制请求的模块配置教程,分别为limit conn模块与limit req模块的相关用法讲解,需要的朋友可以参考下...2016-02-02
  • php怎么连接数据库?PHP MySQL 连接数据库的教程

    php怎么连接数据库?本文介绍了PHP MySQL 连接数据库的教程,不懂的同学可以参考一下本文。 连接到一个 MySQL 数据库在您能够访问并处理数据库中的数据之前,您必须创...2017-07-06
  • php连接数据库标准代码

    在php中连接数据库多指是mysql数据库了,下面我来给php入门者介绍连接数据库实现方法与出现Call to undefined function mysql_connect()的解决办法。 最简单php连...2016-11-25
  • 通过windows自带的系统监视器来查看IIS并发连接数(perfmon.msc)

    如果要想知道确切的当前网站IIS连接数的话,最有效的方法是通过windows自带的系统监视器来查看。这正是本文要介绍的方法...2016-01-27
  • nginx与apache限制ip并发访问 限制ip连接的设置方法

    nginx限制ip并发数,也是说限制同一个ip同时连接服务器的数量,要使apache服务器做对同一IP地址的连接限制,需要mod_limitipconn来实现。一般需要手动编译。不过模块作者也提供了一些编译好的模块,根据自己的apache版本可以直接使用...2016-01-27
  • redis查看连接数及php模拟并发创建redis连接的方法

    下面小编就为大家带来一篇redis查看连接数及php模拟并发创建redis连接的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-01-08
  • php mysql操作mysql_connect连接数据库的教程

    这篇文章写了php mysql操作mysql_connect连接数据库的教程,php操作数据库首先必须连接到指定的数据库,连接数据库可以使用PHP mysql_connect函数。有兴趣的同学可以参考...2016-12-31
  • 一些简单的PHP连接数据库例子详解

    本文章来给各位php入门者详细关于php连接数据库的实例代码,这里主要讲到了入门级的mysql连接代码到高级的封装数据库连接类,希望此文章对各位朋友所有帮助。 连接My...2016-11-25
  • win2003 服务器超出最大允许连接数 最有效的解决方法

    这几天频繁的远程登陆服务器,由于没有及时注销或者其他情况,早上再次登陆时系统提示:终端服务器超出了最大允许连接数...2016-01-27
  • php连接mysql ,mssql ,access,pdo等连接数据库代码

    本文章提供了四种数据库连接程序,都针对于php的,像php mysql,与mssql是比较常用的,至于php access数据连接也有不秒人在用,还有就是利用php pdo来连接数据库代码我是在...2016-11-25
  • Apache最大连接数/apache并发数修改方法

    Apache的最大连接数,默认为256个。 修改apache的最大连接数,方法如下: 步骤一 先修改 /path/apache/conf/httpd.conf文件。 代码如下 复制代码 # vi httpd...2016-01-28
  • php限制IP和IP段的代码(白名单)

    实现的原理比较简单只要获取用户IP然后再在我们黑名单库中验证一下当前IP是不是存在即可进行过滤操作了,具体例子如下。 段代码是我在网上搜相关解决方法时搜到的,...2016-11-25
  • asp.NET连接数的设置方法

    asp.NET连接数的设置方法,需要的朋友可以参考下...2021-09-22