ServerName 仅标识域名用于路由,不参与限速;真正实现单客户端下载带宽限制需在 <VirtualHost> 内配合 mod_bw(推荐)、mod_ratelimit 或 mod_limitipconn 等模块配置,且要求文件由 Apache 直接响应、明确作用路径、匹配 MIME 类型与大小条件。

ServerName 本身不参与带宽限制,它只是定义虚拟主机的主域名标识(如 example.com),用于路由请求,不具备限速能力。真正实现单个客户端下载带宽限制,需在对应 <VirtualHost> 块内配合其他模块配置限速策略,且必须明确作用域、匹配路径、确保文件由 Apache 直接响应。
以下是实用、可靠的操作要点:
明确限速目标,选对模块
Apache 没有“按 ServerName 限速”的原生指令。你要限制的是访问该域名下特定资源的带宽,关键在:
- 文件是否静态直出(Apache 自己读取发送)?
- 是否需区分用户/IP?是否要控并发?
- 是否只限大文件?是否需防多线程?
根据场景选择:
- ✅ 简单路径限速(如
/downloads/):用mod_ratelimit(仅限 KB/s 级匀速流控,不推荐用于生产下载) - ✅ 按文件大小+类型精准限速:用
mod_bw的LargeFileLimit - ✅ 防单 IP 多连接刷带宽:用
mod_limitipconn限并发 - ✅ 防暴力请求频次:用
mod_evasive控制 URI 访问频率
在 VirtualHost 中正确启用限速(以 mod_bw 为例)
mod_bw 更稳定、支持文件类型和大小条件判断,适合生产环境:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<VirtualHost *:80>
ServerName download.example.com
DocumentRoot /var/www/downloads
# 启用带宽模块
BandWidthModule On
ForceBandWidthModule On
# 对所有请求设全局兜底(可选)
BandWidth all 2048 # 单 IP 总带宽上限 2048 KB/s
# 重点:对大于 10MB 的 ZIP/ISO/MP4 文件限速为 512 KB/s
<Location "/">
LargeFileLimit application/zip 10240 512
LargeFileLimit application/x-iso9660-image 10240 512
LargeFileLimit video/mp4 10240 512
</Location>
# 可选:限制单 IP 并发下载数(防 IDM/迅雷)
<IfModule mod_limitipconn.c>
MaxConnPerIP 3
OnlyIPLimit application/zip application/x-iso9660-image video/mp4
</IfModule>
</VirtualHost>⚠️ 注意:
LargeFileLimit第二参数单位是 KB(不是字节),10240= 10 MB- MIME 类型需与
mime.types中定义一致(查/etc/apache2/mime.types或conf/mime.types)mod_bw和mod_limitipconn需手动编译加载,a2enmod不支持
如果坚持用 mod_ratelimit(仅作临时调试)
它只能对整个 <Location> 路径生效,不识别文件类型,且易失效:
<VirtualHost *:80>
ServerName download.example.com
DocumentRoot /var/www/downloads
<Location "/downloads">
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 200 # 单位:KB/s(不是字节/秒!)
</Location>
</VirtualHost>❗ 前提:
- 确保
LoadModule ratelimit_module modules/mod_ratelimit.so已启用- 文件必须由 Apache 直接提供(不能经 PHP
readfile()、X-Sendfile 或反向代理)- 不适用于缓存命中、重定向或 HEAD 请求
验证是否生效
- 用
curl -L "http://download.example.com/files/big.zip" --output /dev/null -w '%{speed_download}\n'查看平均下载速度 - 检查 Apache error log 是否有
mod_bw或mod_limitipconn的计数日志 - 使用
ab或wrk模拟多连接,观察是否触发并发限制(如返回 503)
不复杂但容易忽略。

















