apache限制并发数,IP,带宽设置

给你们推荐两个Apache模块,一个是mod_vhost_limit,用来限制请求并发数,一个是mod_limitipconn,用来控制 Apache的并发联接数,经过该模块能够限制同一来源IP的并发联接数。另外一个模块是bw_mod,用于Apache网站带宽控制,能够根据来源IP, 网段来划分带宽,也能够根据网站文件类型来限制带宽,参数比较灵活,能够根据本身实际状况进行调整。 php

限制并发数 apache

到官方网址: http://ivn.cl/category/apache/ (看不懂的,直接查找mod_vhost_limit) 安全


安装:
apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so

在 httpd.conf 加入:
LoadModule vhost_limit_module libexec/mod_vhost_limit.so
AddModule mod_vhost_limit.c



配置:

MaxClients 150
ExtendedStatus On

NameVirtualHost *

<VIRTUALHOST * />
ServerName server1
DocumentRoot /some/where/1
MaxVhostClients 100


<VIRTUALHOST * />
ServerName server2
DocumentRoot /some/where/2
MaxVhostClients 30


<VIRTUALHOST * />
ServerName server3
DocumentRoot /some/where/3



其中: server1 被限制为 100 个并发线程数。 server2 被限制为 30 个并发线程数。 server3 没有被限制。

注:需 mod_status 的 ExtendedStatus On 支持!!

如超出限制的并发数在客户端就会出现503错误
----------------------------------------------------------------------------------------------
限制IP链接数


到这里下载模块 http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz

安装:
tar zxvf mod_limitipconn-0.04.tar.gz
cd mod_limitipconn-0.04
make APXS=/usr/local/apache/bin/apxs ß-----这里要按你本身的路径设置
make install APXS=/usr/local/apache/bin/apxs ß-----这里要按你本身的路径设置

编辑httpd.conf
添加
全局变量:
< 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 >



或者虚拟主机的:
< VirtualHost xx.xxx.xx.xx > ##ip 地址
    ServerAdmin easy@phpv.net
    DocumentRoot /home/easy
    ServerName www.phpv.net
  < IfModule mod_limitipconn.c >
   < Location / >
      MaxConnPerIP 5
  NoIPLimit image/*
   < /Location >
  < Location /mp3 > # 全部主机的/mp3目录
      MaxConnPerIP 2 # 每IP只容许一个链接请求
      OnlyIPLimit audio/mpeg video # 该限制只对视频和音频格式的文件
  < /Location >
  < /IfModule >
< /VirtualHost >



----------------------------------------------------------------------------------------------
限制带宽:



下载模块 ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c
安装:
/usr/local/apache/bin/apxs -c ./mod_bandwidth.c -o /usr/local/apache/libexec/mod_bandwidth.so

<-------以上/usr/local/apache请设置为你的路径

编辑httpd.conf
添加:
LoadModule bandwidth_module libexec/mod_bandwidth.so
AddModule mod_bandwidth.c
重启你的apache from: http://www.phpv.net/article.php/300 ---------------------------------------------------------------------------------------------- 1、对于mod_limitipconn,其实该模块不只提供客户端并发联接数的控制能力,从安全角度来讲还能够起到对抗固定来源IP地址发起的 DOS攻击,包括来源固定的大量访问请求型攻击(大量GET或POST请求型的攻击),当同一来源IP地址的联接数超过限定的值后,会弹回对方的访问请 求,给对方一个“503服务临时无效”的响应。当Apache服务器受到大量的访问请求型攻击的时候,因为大量的Apache进程及PHP和MYSQL运 行消耗,会致使服务器资源迅速耗尽,网站打开缓慢或瘫痪。若是是此种类型的攻击,使用mod_limitipconn模块则能够有效地提高服务器的抗攻击 能力,由于大量的请求被弹回,节省了服务器运行PHP及MYSQL的性能消耗。固然只要请求进了80端口,不论是接受仍是弹回请求,Aapche都有运行 成本,因此此方法只能是减轻而没法解决,毕竟应用层的处理效率是比较低的。 2、对于网站访问量比较大、使用了mod_limitipconn模块且限制同一客户端并发联接数低于3的状况下,若是用Apache默认的配置参数,极 可能常常出现“服务临时无效”的提示。由于Apache默认是设置“KeepAlive on”,且“KeepAliveTimeout 180”,因此一旦创建联接,那么在3分钟内这个联接是不会被释放的。因此若是网站不一样页面点击频率比较高或图片资源比较多的话,会常常出现服务临时无效 的提示。那么有两种方式去解决,一是加大并发联接数的量,好比设置为普通站点10个并发联接数,图片站点则20个。另外一种方式就是若是你不想加大这个值的 话,能够设置KeepAlive为off,而后缩短Timeout时间,这样联接会很快被释放出来。具体状况根据须要去调整测试,以获得一个最适合本身站 点状况的值。 3、若是要同时限制并发联接数与带宽的话,就用bw_mod+mod_limitipconn,由于虽然bw_mod也能够控制并发联接数,但他是针对某 个目录或整个网站的并发联接数,是用来控制服务器端的总联接数,好比设置MaxConnection all 1000,那么这个网站所能接受的最大并发联接数为1000,而并非限制每一客户端的并发联接数,而mod_limitipconn则是针对同一来源 IP的客户端的并发联接数,因此这二者的联接数限制是有所区别的。 4、我的感受用了bw_mod及mod_limitipconn模块后,网站访问速度有所降低,能凭直观地感受出来,而且CPU的负载有所上升。特别是在 网站访问量比较大的状况下,这两个模块会消耗必定的主机性能,因此轻重权衡这个得你们本身根据状况来采用了。另外bw_mod里有个参数是用来设置控制精 度与频率的,默认是1000毫秒,若是你想提升带宽控制精度就改小这个数值,但会消耗更多的CPU资源,反之亦然,下降精度可提高性能。
相关文章
相关标签/搜索