mod_bw通过安装模块、启用bandwidthmodule开关、设置全局或文件级限速规则实现轻量级带宽控制;支持按扩展名+大小(largefilelimit)、ip段限速,需注意apache版本兼容性。

通过 mod_bw 限制带宽,核心是安装模块、启用控制开关、再按需设置全局或文件级限速规则。它不依赖外部代理或复杂脚本,直接嵌入 Apache 请求处理流程,适合中小规模站点对下载类资源做轻量级流控。
安装 mod_bw 模块
mod_bw 不是 Apache 内置模块,需手动编译或安装预编译版本:
- Linux(源码安装):下载对应 Apache 版本的
mod_bw.c(如 v0.92),用apxs编译安装:/usr/local/apache2/bin/apxs -i -a -c mod_bw.c
成功后配置中会自动添加LoadModule bw_module modules/mod_bw.so - Linux(Debian/Ubuntu):执行
sudo apt-get install libapache2-mod-bw && sudo a2enmod bw - Windows:下载
mod_bw.dll(注意匹配 Apache 2.x 和 VC 运行时版本),放入modules/目录,并在httpd.conf中添加:LoadModule bw_module modules/mod_bw.dll
启用并配置基础限速开关
必须开启模块功能才能生效,否则所有限速指令被忽略:
-
BandWidthModule On—— 启用 mod_bw 功能 -
ForceBandWidthModule On—— 强制对所有匹配请求应用限速(推荐开启,避免被其他配置绕过) -
BandWidth all 0—— 全局总带宽不限(0 表示不限);若要限制整个虚拟主机总出口带宽为 1 Mbps(即 128 KB/s),写成:BandWidth all 131072(单位是字节/秒,1024×1024÷8 = 131072)
按文件类型或大小精细化限速
使用 LargeFileLimit 可针对特定扩展名 + 最小体积触发限速,更实用且不影响小资源加载:
- 语法:
LargeFileLimit <extension><min_size_in_kb><rate_in_bytes_per_second></rate_in_bytes_per_second></min_size_in_kb></extension> - 示例:
LargeFileLimit .zip 50 30720→ 所有 ≥50KB 的 ZIP 文件限速为 30 KB/s(30720 字节/秒)LargeFileLimit .mp4 100 51200→ ≥100KB 的 MP4 限速 50 KB/s - 支持通配符扩展名,如
.tar.gz;多个规则可共存,优先匹配最具体的
按来源 IP 或 IP 段单独限速(需 patch 或新版支持)
原生 mod_bw 不直接支持 per-IP 限速,但可通过以下方式变通实现:
- 使用
BandWidth指令配合 CIDR:BandWidth 192.168.1.0/24 262144→ 该网段限速 256 KB/s(需 mod_bw ≥0.8 且 Apache 2.4+) - 旧版报错
‘remote_addr’ has no member named ‘remote_addr’是因 Apache 2.4+ 已改用client_addr,需打补丁或换用兼容分支(如 ivn.cl 提供的更新版) - 更稳妥的做法:搭配
mod_limitipconn控制并发连接数,再用 mod_bw 控制单连接速率,形成双重约束











