![限制单个 HTTP 请求的带宽,同时不限制总带宽](https://linux22.com/image/101621/%E9%99%90%E5%88%B6%E5%8D%95%E4%B8%AA%20HTTP%20%E8%AF%B7%E6%B1%82%E7%9A%84%E5%B8%A6%E5%AE%BD%EF%BC%8C%E5%90%8C%E6%97%B6%E4%B8%8D%E9%99%90%E5%88%B6%E6%80%BB%E5%B8%A6%E5%AE%BD.png)
答案1
根据你的要求我想建议漆它是一个备受推崇的 HTTP 缓存服务器。它位于 Web 服务器层的前面,并将内容缓存在 RAM 中,以便尽快处理后续请求。
以下参考文章很好地演示了如何在 CentOs 上的 Web 服务器上安装和配置 varnish。
有两个配置文件需要编辑,/etc/sysconfig/清漆和/etc/varnish/default.vcl。
编辑默认.vcl您可以优化您的带宽问题。我已经安装在我的服务器上。
作为示例,配置如下所示。
backend web1 {
.host = "PUBLIC_IP_ADDRESS";
.port = "80";
.probe = {
.url = "/";
.interval = 5s;
.timeout = 1s;
.window = 5;
.threshold = 3;
}
}
答案2
这限制率nginx的设置正如其他响应者所建议的,似乎克服了鱿鱼和清漆中的一些问题。来自文档:
限制向客户端传输响应的速率。速率以每秒字节数指定。零值禁用速率限制。该限制是按请求设置的,因此如果客户端同时打开两个连接,则总体速率将是指定限制的两倍。
对于我的场景,我希望限制单个请求的大文件传输下载字节的速率没有限制客户端的总带宽,这正是我所需要的。
乌贼
鱿鱼的延迟池对客户端进行分组(通常按 IP)并使用分桶速率限制。然而甚至文档说:
您无法限制单个 HTTP 请求的连接速度。
漆
清漆的vmod_vsthrottle(同样地libvmod 节流阀)采用令牌桶算法并采用任意密钥。这个实现看起来很酷,但是看起来没有一个好的方法来减缓流量。相反,超过限制(以请求/秒为单位)的请求会被响应为类似第429章。