忘记密码?

一键登录

草根吧源码论坛

Discuz! LAMP Apache环境配置mod_bw限速模块实现网站流量控制加速网站

查看: 52|回复: 0

Discuz! LAMP Apache环境配置mod_bw限速模块实现网站流量控制加速网站

[复制链接]

1725

主题

2224

热度

692

贡献

民审

Rank: 8Rank: 8

发表于 2016-11-23 15:35:58 | 显示全部楼层 |阅读模式 | 百度  360  谷歌 
分享到:
本帖最后由 民审-M 于 2016-11-24 09:50 编辑

目前很多站点目前在提供web页面访问的同时,也提供http软件或文件下载。但由于租用的IDC的线路的带宽不同,可能就有对于http下载速度的限制。很显然,这是必要的。假如要不限速的情况下,可能十几个人在高速下载的情况下就会把租用低带宽的主机的网络流量给占用到流量上限,近而造成web页面不能访问。这相原理类似于DDOS攻击了。而apache做为一个老牌的web服务器。提供这样的一个功能自不在话下。


※基于AMH 5.3一键LAMP环境,

实测演示效果地址:demo.caogen8.co/ck   【赞助VIP如需服务器环境配置协助:@小草根

一、下载安装

mod_bw并不是一个官方的模块。是由第三方提供的,不过受apache官方认可的。其下载页面为:http://ivn.cl/category/apache/,目前针对linux/unix的最新版本是0.92 ,windows下的最新版是0.91 。

windows下的安装十分简单,将 mod_bw.dll 放到apache的modules目录下。编辑 httpd.conf,加入LoadModule bw_module modules/mod_bw.dll即可。linux下的安装也不难,只需要通过apxs或apxs2动态安装即可。方法如下:

游客,如果您要查看本帖隐藏内容请回复

二、配置及参数

模块加载会自动写入到 /usr/local/apache-2.4/conf/httpd.conf

检测确认:查找

  1. LoadModule bw_module          modules/mod_bw.so
复制代码

如果存在,则证明已经写入加载模块!

还需要编辑该配置文件:

  1. vi /usr/local/apache-2.4/conf/httpd.conf
复制代码

查找:

  1. Include /usr/local/amh-5.3/vhost/amh-apache.conf
复制代码

在其下行添加:

  1. Include conf/extra/mod_bw.conf
复制代码

创建并修改模块配置文件:

  1. vi /usr/local/apache-2.4/conf/extra/mod_bw.conf
复制代码

复制粘贴(I)以下配置信息:

  1. <IfModule mod_bw.c>
  2.       BandwidthModule On
  3.       ForceBandWidthModule On
  4.       Bandwidth all 1024000
  5.       MinBandwidth all 50000
  6.       LargeFileLimit * 500 50000
  7. </IfModule>
复制代码

:wq

保存!

  1. init 6
复制代码

重启使全局配置生效!

查看环境是否正常安装并启用了mod_bw模块检测方法:

游客,如果您要查看本帖隐藏内容请回复

则证明是正常加载并启用mod_bw模块的。


#注释:   【参考配置:http://legacy.ivn.cl/files/txt/mod_bw-0.92.txt ,中文翻译:http://www.caogen8.co/linux/txt/mod_bw-0.92.txt

该模块虽然大小并不大,但配置参数却非常丰富,几乎我们想到的情况其都可以进行配置。该模块共有9个配置参数。

1、BandWidthModule [On|Off]

默认该模块是关闭的,BandWidthModule On可以开启他。

2、ForceBandWidthModule [On|Off]

预设不会过滤每个需求。如果开启他,他将处理过滤每个需求。

3、BandWidth [From] [bytes/s]

这边有两个参数。From 是限制来源的位置,也就是该位置受限制。他可以是完整的hostname、网域名称或IP。可搭配子网掩埋使用,例如 192.168.0.0/24 or 192.168.0.0/255.255.255.0 。另一个参数是限制的速率,以 bytes 每秒为单位;假如为 0,则不受限制。

4、MinBandWidth [From] [bytes/s]

这边也有两个参数,From的用法同参数3的一样,另一个参数每个连线限制的最小速率,以 bytes/s 为单位,-1 代表无限制。

5、LargeFileLimit [Type] [Minimum Size] [bytes/s]

Type 用于指明文件类型,可以使用 * 代表全部。也可使用 .tgz 、 .avi 等。Minimun Size 单位是 kbytes/s,只要超过这个 Size 就被规范在这个设定的限速中。最后一个参数就是被限制的速率!

6 - BandWidthPacket [Size]

可能您不需要去设定这个参数!预设值为 8192,适用于任何速度。这个设定必须介于 1024 至 131072。小的封包将使得速度变慢,且更耗费系统效能;相反亦是。

7、BandWidthError [Error]

这个选项是用来自定义错误讯息的。默认情况下,超过最大连接时,将会显示503错误。但用户往往不理解什么是503,你可以自订一个错误,错误号码从 300 至 599之间选择。在自订错误编码时请注意,要使用尚未被定义的号码!
例如:使用错误号码 510(510尚未被定义)

  1. ErrorDocument 510 /errors/maxconexceeded.html
  2. BandWidthError 510
复制代码

8、MaxConnection [From] [Max]

max参数是设定最大的连接数。假如连接超过这个数量,Apache将显示503 Service Temporarily Unavailable错误。在设定这个参数之前,需先指定 BandWidth 值。他不需要设定的太低,您可以设定为无限制。

9、显示该模块的状态(该参数是从0.9版本后新增的)

配置如下:

  1. <location /modbw>
  2.     SetHandler modbw-handler
  3. </location>
复制代码

此时,可以通过http://127.0.0.1/modbw查看该模块的状态,也可以通过http://127.0.0.1/modbw?csv下载为csv文件查看目前的状态。通过该链接可以查看到id、name、lock、count、bw、bytes、hits几项内容。

三、示例

该模块相关参数可以设定在virtual host或directory配置内,也可以设定在全局配置httpd.conf文件内或.htaccess里!不过使用.htaccess 别忘了把httpd.conf 里的AllowOverride设为ALL 。

1. 限制每个连接速度10kb/s 1. 限制每个连接速度10kb/s

  1. <Virtualhost *>
  2.       BandwidthModule On
  3.       ForceBandWidthModule On
  4.       Bandwidth all 10240
  5.       MinBandwidth all -1
  6.       Servername www.example.com
  7. </Virtualhost>
复制代码

2. 限制每一个连接 100 kb/s,最小的速率为 50kb/s,且当超过 500 kb时,限速为 50kb/s
  1. <Virtualhost *>
  2.       BandwidthModule On
  3.       ForceBandWidthModule On
  4.       Bandwidth all 1024000
  5.       MinBandwidth all 50000
  6.       LargeFileLimit * 500 50000
  7.       Servername www.example.com
  8. </Virtualhost>
复制代码

3. 限制 avi & mpeg 文件的下载速度为 20 kb/s

  1. <Virtualhost *>
  2.       BandwidthModule On
  3.       ForceBandWidthModule On
  4.       LargeFileLimit .avi 1 20000
  5.       LargeFileLimit .mpg 1 20000
  6.       Servername www.example.com
  7. </Virtualhost>
复制代码

4、当文件类型(mime)为 text 格式时,限制速度为 5kb/s

  1. <Virtualhost *>
  2.       BandwidthModule On
  3.       AddOutputFilterByType MOD_BW text/html text/plain
  4.       Bandwidth all 5000
  5.       Servername www.example.com
  6. </Virtualhost>
复制代码

总结:

        该模块主要用于对下载速度进行限制,如果想要对每个IP的连接数进行限制。还需要用到另一个模块mod_limits ,其项目托管在github上,页面为:https://github.com/hackman/mod_limits 。apache的其他模块可以通过https://modules.apache.org/查看。

帖子地址: 

本文来源于草根吧源码论坛 www.caogen8.co,欢迎大家下载。
如果您没有贡献需要充值,可以直接在线充值,点击充值
如果你需要加入本站赞助VIP会员,可以直接在线开通,点击开通
如果找不到您要的资源,请搜索一下,点击搜索
回复

举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆 用百度帐号登录 一键登录:

本版积分规则

收藏帖子 返回列表 搜索
快速回复 返回顶部 返回列表