apache根据IP带宽限制

根据来源IP进行带宽限制可通过bw_mod模块实现。bw_mod是一个非官方的模块,使用该模块后传输速度到达限制的时候,Apache断开与客户端的连接。bw_mod配置方法如下。

(1)使用如下命令安装相关软件包。

  1. yum -y install httpd-devel.i*

(2)下载(下载地址:http://www.ivn.cl/files/source/mod_bw-0.8.tgz)源码包后,使用如下命令解压。

  1. tar -xzvf mod_bw-0.8.tgz

(3)编译mod_bw。

  1. cd mod_bw
  2. apxs -cia mod_bw.c

(4)mod_bw在配置时有以下参数。

BandWidthModule [On|Off]:当BandWidthModule On时,才开启bw_mod的带宽限制功能。

BandWidth [客户端来源] [bytes/s]:设置带宽限制的最大值,如在客户端来源使用all关键字时表示所有访问Apache的客户端(客户端来源表示方法如表8-3所示),当BandWidth值为0,则表示不限制带宽。

  1. BandWidth all 204800                    ①
  2. BandWidth 192.168.0.30 102400       ②

其中各行含义如下。

①:将所有客户端最大带宽限制为200kbit/s。

②:将IP地址为192.168.0.30的客户端最大带宽限制为100kbit/s。

MinBandWidth [客户端来源] [bytes/s]:设置带宽限制的最大值,如果在客户端来源使用all关键字时表示所有访问Apache的客户端,客户端来源表示方法如表8-3所示。如果只有一个客户端连接到Apache时,该参数没有作用,Apache会根据BandWidth的值限制其带宽,如果有多个客户端连接到Apache时,Apache会根据MinBandWidth的值限制每个客户端带宽,根据BandWidth的值限制总带宽。当MinBandWidth值为0,则表示每个客户端带宽最大为256 bytes/s,当MinBandWidth值为-1时,每个客户端带宽最大为BandWidth的值。在下面的例子中将每个客户端最大带宽限制为200kbit/s。

表8-3 BandWidth来源

客户端指定方法 示    例 满足示例的客户端
IP指定单一主机 192.168.0.30 客户端IP地址为192.168.0.30
指定网段 192.168.0.0/255.255.255.0 客户端所在网段为192.168.0.0/24
指定网段 192.168.0.0/24
域名单一主机 client.example.com 客户端FQDN为client.example.com
域名指定范围 .example.com 客户端FQDN的DNS后缀为example.com
所有客户端 all
  1. BandWidth all 204800
  2. MinBandWidth all -1

BandWidth u:[User-Agent] [bytes/s]:通过客户端信息限制带宽。

  1. BandWidth "u:^Mozilla/5(.*)" 102400 ①
  2. BandWidth "u:wget" 204800                   ②

其中各行含义如下。

①:将使用FireFox的客户端最大带宽限制为100kbit/s。

②:将使用wget的客户端最大带宽限制为200kbit/s。

LargeFileLimit [文件类型] [文件大小] [bytes/s]:对于指定类型超过指定大小(单位为kbytes)的文件使用特定限制带宽。在下面的例子中将所有超过500KB的AVI文件带宽限制为300kbit/s。

  1. LargeFileLimit .avi 500 307200

MaxConnection [客户端来源] [最大连接数] :设置最大连接数,当直接最大连接数时,Apache将返回503错误给客户端。如在客户端来源使用all关键字时表示所有访问Apache的客户端,MaxConnection参数在使用时必须有对应的BandWidth,否则该参数将被忽略。

  1. BandWidth all 204800                    ①
  2. MaxConnection all 200                   ②
  3. BandWidth 192.168.0.30 102400       ③
  4. MaxConnection 192.168.0.30 5        ④

其中各行含义如下。

①:将所有客户端最大带宽限制为200kbit/s。

②:将所有客户端最大连接数设置为200。

③:将IP地址为192.168.0.30的客户端最大带宽限制为100kbit/s。

④:将IP地址为192.168.0.30的客户端最大连接数设置为5。

MaxConnection u:[User-Agent] [Max]:通过客户端信息限制最大连接数。

  1. MaxConnection "u:^Mozilla/5(.*)" 20 ①
  2. MaxConnection "u:wget" 5                ②

其中各行含义如下。

①:将使用FireFox的客户端最大连接数限制为20。

②:将使用wget的客户端最大连接数限制为5。

在使用BandWidth、MinBandWidth、LargeFileLimit、MaxConnection参数时可以根据客户端来源不同指定多个。

点赞