Apache设定访问数量及下载速度限制
公司搭建了下载服务器,闲着又没事, 我测试了下,下载速度 1.2M/s+ 。 看来有必要对服务器下载限速, 要不受不了,哪天硬件坏了又得麻烦我。
好了, 开工:
-------------------------------------------------------
FTP地址:ftp://www.6688.cc/
用户名:www.linuxidc.net
密码:www.6688.cc
#tar xvf mod_bw-0.8.gz
# cd mod_bw
# /opt/apache/bin/apxs -ac mod_bw.c
# gcc -shared -p /opt/apache/module/mod_bw.so mod_bw.o
#/opt/apache/bin/apxs -i -a -c mode_bw.c
然后在apache配置文件里面按照需要添加限制即可。
<VirtualHost *:80>
DocumentRoot "/web/linuxidc"
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 1024000
MinBandwidth all 50000
LargeFileLimit * 500 100000 // *表示文件类型,所有大于500k的文件下载速度100k , 这里我当时以为两个单位一样的。。。
</VirtualHost>
附录:
mod_bandwidth选项简单说明:
BandWidthPulse
格式: BandWidthPulse <毫秒(千分之一秒>;
默认: 1000
上下文: per server config
改变计算带宽的时间间隔,默认为1000毫秒(1秒)。使用更低的间隔可以获得
更精确的带宽控制,但消耗更多的CPU时间,反之亦然。
BandWidth
格式: BandWidth <domain|ip|all>; <速率>;
默认: 无
上下文: per directory, .htaccess
限制这个目录下文件下载的速率。
domain 指定来自哪个域的连接受到这个设置的影响。
ip 指定来自哪个ip地址(或者ip段)的连接受到影响。
all 所有连接都受到影响。
示例:
<Directory />;
# 来自 idcfree.com 的连接不限制下载速度
BandWidth idcfree.com 0
# 来自 192.168.0.0/16(或者192.168.0) 网段的连接不限制下载速度
BandWidth 192.168.0.0/16 0
# 其他连接限制下载速度为每秒1024字节
BandWidth all 1024
# 越前面的设置优先权越高
</Directory>;
LargeFileLimit
格式: LargeFileLimit <文件大小>; <速率>;
默认: 无
上下文: per directory, .htaccess
对于超过指定大小的文件,下载时使用的速率。如果速率设置0即不限制速度,
但下载速度仍然要受到BandWidth设置的影响。如果设置成-1,则完全不受影响。
通过设置不同的文件大小和速率,可以设置不同大小范围内文件的下载速度。
示例:
文件尺寸大于等于200千字节的文件,下载速率为每秒3072字节
LargeFileLimit 200 3072
LargeFileLimit 1024 2048
MaxConnection
格式: MaxConnection <连接数>;
默认: 0 (不限制)
上下文: per directory, .htaccess
当超过指定连接数时,拒绝新的连接。
MinBandWidth
格式: MinBandWidth <domain|ip|all>; <速率>;
默认: all 256
上下文: per directory, .htaccess
设置最小带宽,默认为每秒256字节。根据BandWidth和LargeFileLimit设置的速
率。mod_bandwidth会计算允许的连接数。例如BandWidth为4096字节,而
MinBandWidth为1024字节,则最大并发连接数为4。
Mod_limitipconn选项简单说明:
<Location / >; 设置要控制的目录
MaxConnPerIP 2 限制单IP并发连接数
NoIPLimit image/* 不受限制的文件类型
</Location>;
<Location /mp3>;
MaxConnPerIP 1
OnlyIPLimit audio/mpeg video 仅用于限制的文件类型
</Location>;
顺便附上单位转换。
位(bit,简写:b)
字节(Byte,简写:B);1Byte=8bit
千(Kilo,简写:K); x1,000
兆(Mega,简写:M); x1,000,000 =1000K
吉(Giga,简写:G); x1,000,000,000 =1000M
梯( 简写:T); x1,000,000,000,000 =1000G
由于计算机系统为二进制算法,实际进位为1024,有时计算容量时又忽略小数字,记为1000进位。因此会出现显示字节数和标称字节数有差别。
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB