Apache二进制安装不自带下载限速功能,需通过第三方模块mod_bw实现;配置分三步:加载模块(LoadModule bw_module modules/mod_bw.so)、启用限速(BandwidthModule On、ForceBandWidthModule On)、设置规则(如BandWidth all 512000、LargeFileLimit .zip 1024 25600等)。

Apache 二进制安装(如官方预编译包或 yum/apt 安装)本身不自带下载限速功能,需借助第三方模块 mod_bw 实现按 IP、路径、文件类型等维度的带宽控制。配置过程分三步:加载模块、启用功能、设置规则。
✅ 确认 Apache 支持动态模块加载
二进制安装通常已启用 mod_so(动态模块支持)。检查是否开启:
httpd -M | grep so # 或 apachectl -M | grep so
输出含 so_module (shared) 即可继续。
✅ 下载并安装 mod_bw 模块
该模块需手动编译安装(即使 Apache 是二进制安装,模块仍需源码编译):
# 下载(注意版本兼容性,推荐 0.7 或 0.8) wget http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz tar zxvf mod_bw-0.7.tgz cd mod_bw # 使用系统自带的 apxs 工具编译安装(路径通常为 /usr/bin/apxs 或 /usr/sbin/apxs) /usr/bin/apxs -c -i mod_bw.c
✅ 成功后会在 Apache 模块目录(如
/usr/lib64/httpd/modules/或/usr/lib/apache2/modules/)生成mod_bw.so。
✅ 启用模块并配置限速规则
1. 加载模块
编辑主配置文件(如 /etc/httpd/conf/httpd.conf 或 /etc/apache2/apache2.conf),添加:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
LoadModule bw_module modules/mod_bw.so
2. 全局或虚拟主机内启用限速
在 <VirtualHost> 或 <Directory> 块中配置:
<IfModule mod_bw.c>
BandwidthModule On
ForceBandWidthModule On
# 所有请求总带宽上限(单位:字节/秒)
BandWidth all 512000 # ≈ 500 KB/s
# 每个客户端最大带宽(-1 表示继承 BandWidth all 的值)
MinBandwidth all -1
# 对大于 1MB 的 .zip/.iso 文件单独限速
LargeFileLimit .zip 1024 25600 # 超过 1MB 的 zip,限 25 KB/s
LargeFileLimit .iso 1024 10240 # 超过 1MB 的 iso,限 10 KB/s
# 特定 IP 限速更严(如 192.168.1.100)
BandWidth 192.168.1.100 5120 # 5 KB/s
# 屏蔽 wget/curl 用户代理的高速下载
BandWidth "u:^wget" 0
BandWidth "u:^curl" 0
</IfModule>⚠️ 注意:
BandWidth all是全局总带宽上限,不是单个连接上限;真正限制“单客户端速度”的是MinBandwidth all配合BandWidth [IP] [rate]。
✅ 可选:自定义限速提示页
当用户触发限速(如被 BandWidth "u:^wget" 0 拦截),返回友好提示:
ErrorDocument 510 "/limit-exceeded.html" BandWidthError 510
然后在网站根目录放一个 limit-exceeded.html 页面。
重启 Apache 生效:
systemctl restart httpd # RHEL/CentOS # 或 systemctl restart apache2 # Debian/Ubuntu
验证方式:用 curl -v http://your-site/file.zip 观察 X-Bandwidth-Limit 响应头,或用 wget 多线程下载观察实际速率是否被压制。

















