Nginx使用limit_rate limit_conn限制文件下载速度

今天搜索如何在一个Nginx服务器限制下载速度,该服务器每秒有大量的mp4视频文件请求。遇到的问题是,每个用户发起大量的请求消耗了大量的服务器带宽,所以使用Nginx的limit_rate和limit_rate_after这两个指令解决此问题。

基于我自己服务器的配置,我在一个location块使用这两个指令:

location ^~ /videos/ {
    ...
    limit_rate_after 1m;
    limit_rate 150k;
    ...
}

第一个指令limit_rate_after,从下载到你指定的文件大小之后开始限速,然后第二个指令limit_rate,设置最高下载速度。

要注意的是上面的设置是限制的是每一个连接的下载速度,所以如果一个用户打开了多个连接下载,那么它的下载速度就能达到单个连接的限速乘以连接数。不过我们可以使用limit_zone和limit_conn这两个指令限制其连接数。例如:
在server块配置中:

limit_rate 128K; limit_zone one $binary_remote_addr 10m;

在location配置块中:

limit_conn one 10;

上面的配置表示每个连接允许的速率为1Mbit,最大连接数10个。

标签:Nginx 发布于:2019-11-18 19:46:31