温馨提示×

ubuntu apache如何限流量

小樊
43
2026-10-05 03:22:02
栏目: 智能运维

在 Ubuntu 上通过 Apache 限制流量(带宽/速率),常见做法有以下几种,按“是否装模块”来区分:


一、使用 Apache 自带模块(推荐)

1. 使用 mod_ratelimit(Apache 2.4+ 自带)

适合限制每个连接的下载速度。

启用模块

sudo a2enmod ratelimit
sudo systemctl restart apache2

配置示例

编辑站点配置(如 /etc/apache2/sites-available/000-default.conf):

<VirtualHost *:80>
    ServerName example.com

    <Location /downloads>
        SetOutputFilter RATE_LIMIT
        SetEnv rate-limit 100
        # 单位 KB/s,这里是 100KB/s
    </Location>
</VirtualHost>

或全局限制:

<IfModule mod_ratelimit.c>
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 200
</IfModule>

✅ 优点:简单、官方支持
❌ 缺点:只限下载,不限并发总数


二、使用 mod_bw(第三方模块)

适合更精细的流量控制(按 IP、按目录、按速度)。

1. 安装

Ubuntu 默认仓库可能没有:

sudo apt install libapache2-mod-bw

启用:

sudo a2enmod bw
sudo systemctl restart apache2

2. 配置示例

<VirtualHost *:80>
    BandWidthModule On
    ForceBandWidthModule On

    BandWidth all 500000
    # 500KB/s 总带宽

    <Directory /var/www/html/downloads>
        BandWidth all 100000
        # 每个连接 100KB/s
    </Directory>
</VirtualHost>

✅ 优点:功能强
❌ 缺点:老模块,需测试兼容性


三、用 iptables / tc 限制(系统级)

适合整个服务器出口带宽限制。

示例(限制 80 端口 1Mbps)

sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

⚠️ 需要网络知识,影响所有流量


四、用 Nginx 反代(进阶)

如果可以换架构,Nginx 的 limit_rate 更简单:

location /downloads {
    limit_rate 100k;
}

推荐方案总结

需求 方案
简单限速 mod_ratelimit
精细控制 mod_bw
系统级 tc
新项目 Nginx

如果你能说明:

  • Apache 版本
  • Ubuntu 版本
  • 想限制“下载 / 上传 / 总流量”

我可以给你精确配置。

0 踩