nginx - 限制每个服务器块的带宽使用量

nginx - 限制每个服务器块的带宽使用量

在 Apache 中,我们有一些很好的解决方案来限制每个虚拟主机的带宽使用量,例如 mod_bandwidth。但是,自从我开始使用 nginx 以来,我找不到限制和监控每个服务器块的带宽使用量的方法。

我想听听有关监控和限制 nginx 上每个服务器块的带宽使用量的一些建议。

答案1

您可以使用它limit_rate来限制带宽。对我来说,这也适用于 nginx 的社区版本。

例如,可以将整个服务器块的带宽限制为每秒 1000 字节,如下所示:

server {
    listen 80;

    location / {
        limit_rate 1k;
    }
}

答案2

Nginx Plus 具有内置选项来限制每个主机的带宽。

如果您想通过 nginx 的社区版本实现它,您有 2 个选择:(因为它仅包括每个 IP 带宽池。)

1:限制整个nginx进程的带宽,使用外部工具或者ip-tables。

2:通过代理传递到 lighttpd 提供此特定内容,并在 lighttpd 中设置服务器节流阀

server.kbytes-per-second = 6250

如果我们想要限制 downloads.domain.net,Lighthttpd 将具有以下配置:

server.port = 81
server.document-root = "/path/to/downloads"
index-file.names = ( )

Nginx的:

server {
    listen 80;
    server_name downloads.domain.net;

    location / {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://127.0.0.1:81;
    }
}

当然您也可以通过特定的文件、文件夹等进行代理。

最终:如果您不想超过特定的带宽点,则使用此功能以及 ip-table 限制整个端口 80 流量(和 443)是最终的解决方案。(例如,VoIP 服务可能需要对 http 流量进行硬性限制)

相关内容