用Apache模块做流量限制
也想来试试看 Windows 上能否做到
花费一两天的时间明查暗访下,终于给我找到啦~
找到后来才知道有个 http://modules.apache.org 网站
在里面找到一个 Bandwidth Module 的 module
1. 将 mod_bw.dll 放到安装 apache 资料夹下的 modules
2. 编辑 httpd.conf,将 LoadModule bw_module modules/mod_bw.dll 加入
3. 重开 apache
4. 查看 phpinfo() 里是否有 mod_bw
1 - BandWidthModule [On|Off]
这个 module 预设是关闭的,要将他开启才能够使用。
BandWidthModule On 2 - ForceBandWidthModule [On|Off]
这个 module 预设不会过滤每个需求。
如果您开启他,他将处理过滤每个需求。
(正常的使用下,仅会过滤 text/html test/plain)
AddOutputFilterByType MOD_BW text/html text/plain
ForceBandWidthModule On
这边有两个参数。
From 是限制来源的位置,也就是该位置受限制。他可以是完整的 hostname、网域名称或 IP。可搭配遮罩使用,例如 192.168.0.0/24 or 192.168.0.0/255.255.255.0 。
另一个参数是限制的速率,以 bytes 每秒为单位;假如为 0,则不受限制。
BandWidth localhost 10240
BandWidth 192.168.218.5 0
这边有两个参数。
From 是限制来源的位置,也就是该位置受限制。他可以是完整的 hostname、网域名称或 IP。可搭配遮罩使用,例如 192.168.0.0/24 or 192.168.0.0/255.255.255.0 。
另一个参数每个连线限制的最小速率,以 bytes/s 为单位,-1 代表无限制。
BandWidth all 102400
MinBandWidth all 50000
everyone will have at least 50kb (even if you have 50 clients)
MinBandWidth all -1
顾名思义,这设定是专门用来限制大型档案的。
Type 是指副档名,可以使用 * 代表全部。也可使用 .tgz 、 .avi 等。
Minimun Size 单位是 kbytes/s,只要超过这个 Size 就被规范在这个设定的限速中。
最后一个参数就是被限制的速率囉!
LargeFileLimit .avi 500 10240
可能您不需要去设定这个参数!
预设值为 8192,适用于任何速度。
这个设定必须介于 1024 至 131072。
小的封包将使得速度变慢,且更耗费系统效能;相反亦是。
这个选项是用来自订个人化错误讯息的。
在预设的情况下,超过最大连线时,这个 module 将会丢出 503 HTTP_SERVICE_UNAVAILABLE 回应。
对于大部分的人来说,他们会困扰着错误讯息,不知道为什么会这样。
你可以自订一个错误讯息的页面,去解释在什么情况下会发生这种问题。
但有时候错误号码 503 是不适用这个地方的。
所以你可以自订一个错误号码从 300 至 599。
( 有关 HTTP 错误讯息可参考下列 Reference: HTTP Protocol Error Codes)
在自订错误编码时请注意,要使用尚未被定义的号码!
BandWidthError 510
注意:有时候自订错误编码可能会有问题。但在大部分的情况下,作者已修复。
这个设定有两个参数。
From 是限制来源的位置,也就是该位置受限制。他可以是完整的 hostname、网域名称或 IP。可搭配遮罩使用,例如 192.168.0.0/24 or 192.168.0.0/255.255.255.0 。
第二个参数是设定最大的连线数量。假如连线超过这个数量,Apache 将丢出 503 Service Temporarily Unavailable 的讯息。
他不需要设定的太低,您可以设定为无限制。
BandWidth all 0
MaxConnection all 20
or
BandWidth all 0
BandWidth 192.168.0.0/24 10240
MaxConnection all 20
MaxConnection 192.168.0.0/24 5
示范区:
这个 module 设定可安插在 virtual host 或 directory,看你要设定在 httpd.conf 或 .htaccess 皆可!
不过使用 .htaccess 别忘了把 httpd.conf 里的 下的 AllowOverride 设为 ALL 。
1. 限制每个连线为 10kb/s
ForceBandWidthModule On
Bandwidth all 10240
MinBandwidth all -1
Servername www.example.com
ForceBandWidthModule On
Bandwidth all 1024000
MinBandwidth all 50000
LargeFileLimit * 500 50000
Servername www.example.com
ForceBandWidthModule On
LargeFileLimit .avi 1 20000
LargeFileLimit .mpg 1 20000
Servername www.example.com
AddOutputFilterByType MOD_BW text/html text/plain
Bandwidth all 5000
Servername www.example.com