在 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 流量进行硬性限制)