背景
我有一个 Apache(带有 NginX 反向代理)作为 Web 服务器。我有一个论坛和一个图片托管服务正在运行。
但如您所知,图片托管服务会占用大量网络带宽(Mbps)。我想通过限制图片托管服务的虚拟主机中的最大流量来为我的论坛保留一些带宽。
我做了什么:
阿帕奇
我已经安装了mod_bw模块以限制最大带宽。它似乎工作得很好,因为它减慢了页面加载速度。但这还不够。我还需要限制下载速度,现在图像将全速下载。所以这个不起作用(或部分起作用),但我会把它放在httpd配置文件。
Nginx
内置模块限制速率正在下载图片。所以看起来如果结合两个模块,图片托管服务可以在受限环境中运行。但是等一下...当我一次下载多张图片时,所有图片都会以相同的限制速度下载。例如我设置为 50KB/s,如果我下载一张图片,最大速度是 50KB/s。然后我在最后一张图片完成之前下载另一个图片文件,两个图片的下载速度都是 50KB/s,总共是 100KB/s。
这不是我需要的。
我真正需要的是:
无论有多少并发用户同时浏览图片托管网页,他们只能共享设置为 50KB/s 的总带宽。(只是举例,我会增加这个值)
由于我同时拥有 Apache 和 NginX,所以我不介意组合多个模块来帮助我达到目的。请帮我解决这个问题,非常感谢!
答案1
如果你需要设置连接限制,你应该能够这样做限制区域和limit_conn指令。例如:
在您的服务器块配置中:
limit_rate 128K; limit_zone one $binary_remote_addr 10m;
在您的位置块配置中:
limit_conn one 10;
在此示例中,每个 IP 允许 10 个连接,每个连接 1 Mbit。