在 Ubuntu 上使用 Apache2 进行限流量(带宽限速 / 并发流量控制),常见做法有下面几种,按“实用程度”从易到难说明。
mod_ratelimit(推荐,Apache 原生)适合:限制每个连接的下载速度
sudo a2enmod ratelimit
sudo systemctl restart apache2
编辑站点配置(如 /etc/apache2/sites-available/000-default.conf):
<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory /var/www/html>
# 限速 100 KB/s
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100
</Directory>
</VirtualHost>
可选参数:
SetEnv rate-limit 200 # KB/s
SetEnv rate-limit-burst 1024 # 突发流量(KB)
✅ 优点:简单、官方支持
❌ 缺点:不能限制总流量,只能限速率
mod_bandwidth(第三方)适合:精细控制(按 IP / 目录 / 总带宽)
Ubuntu 默认仓库没有,需要手动编译或使用 PPA(不推荐生产环境)。
一般步骤:
apt install apache2-dev
wget http://apache.ivn.cl/mod_bandwidth.c
apxs -c mod_bandwidth.c
⚠️ 较老,兼容性一般
BandWidthModule On
ForceBandWidthModule On
BandWidth all 50000 # 50 KB/s
MaxConnection all 10
mod_qos(功能强)适合:限并发、限速率、防滥用
sudo apt install libapache2-mod-qos
sudo a2enmod qos
示例:
QS_LimitRequestBody 102400
QS_EventLimitCount 100 1
QS_LimitReadBody 100
tc(Linux 流量控制)适合整台服务器限速。
nginx 反代 + limit_rate如果你能加一层 Nginx:
limit_rate 100k;
| 需求 | 推荐方案 |
|---|---|
| 限制下载速度 | mod_ratelimit |
| 限制单个 IP 带宽 | mod_bandwidth |
| 限制并发连接 | mod_qos |
| 限制总流量 | 系统层 / Nginx |
| 简单稳定 | ✅ mod_ratelimit |
wget http://your-server/file
观察速度是否被限制。
如果你能说明:
我可以直接给你一套可复制的配置。