apache可通过mod_bw模块在httpd.conf中对特定文件、路径或类型限速,该模块需手动安装,支持按目录、文件类型、大小阈值灵活配置,如bandwidth .iso 51200或largefilelimit application/zip 1024 102400。

Apache 可以通过 mod_bw 模块在 httpd.conf 中对特定文件(或路径、类型)设置下载速度限制,这是最直接、最常用的方式。注意:mod_ratelimit 仅适用于 Apache 自己生成或本地静态文件响应,且依赖 Content-Length,对 ProxyPass 转发的动态内容无效;而 mod_bw 支持按目录、文件类型、大小阈值等灵活限速,兼容性更好。
确认并启用 mod_bw 模块
该模块非 Apache 官方内置,需手动编译安装(Linux)或加载 DLL(Windows):
- 检查是否已加载:在
httpd.conf中确认存在类似行:LoadModule bw_module modules/mod_bw.so - 若无,先用
apxs编译安装(以源码包mod_bw-0.92为例):/usr/bin/apxs -i -a -c mod_bw.c - Windows 用户可直接放置
mod_bw.dll并加载:LoadModule bw_module modules/mod_bw.dll
在 Directory 或 Location 块中配置限速规则
把限速逻辑绑定到具体路径,才能精准控制“特定文件”:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 限制某个下载目录下所有文件(如
/downloads/):<directory><br> BandwidthModule On<br> ForceBandWidthModule On<br> BandWidth all 204800 # 200 KB/s(单位:字节/秒)<br></directory>
- 限制大于 1 MB 的 ZIP 文件限速为 100 KB/s:
LargeFileLimit application/zip 1024 102400
(1024表示 1024 KB = 1 MB;102400= 100 KB/s) - 只对特定后缀限速(需配合
AddType确保 MIME 正确):BandWidth .iso 51200 # .iso 文件限速 50 KB/s
关键参数说明与避坑提示
这些配置必须放在生效作用域内(如 <virtualhost></virtualhost>、<directory></directory> 或全局),且注意顺序和依赖:
-
BandwidthModule On是开关,必须开启才生效 -
ForceBandWidthModule On强制模块介入所有请求(推荐开启,避免被其他模块绕过) -
BandWidth all N控制每个连接的上限速率(不是总带宽) -
MaxConnection all 3可选:配合限速,防多线程暴力下载(例如同一 IP 最多 3 个并发) - 确保目标路径有读取权限,且
mod_mime已启用(影响LargeFileLimit对 MIME 类型的识别)
验证与调试建议
修改后务必重启 Apache,并用工具验证效果:
- 重启命令:
systemctl restart httpd或apachectl graceful - 用
wget或curl -v下载目标文件,观察传输速率是否被压至设定值 - 查看错误日志:
tail -f /var/log/httpd/error_log,确认无mod_bw加载失败或语法错误 - 注意:限速不改变 HTTP 状态码,客户端不会感知,仅实际下载变慢










