Nginx限制单链接的网速


0, limit_rate主要用于限制用户和服务器之间传输的字节数,最常用的场景可能就是下载/上传限速

1
2
3
4
5
6
7
# 语法配置
Syntax: limit_rate rate;
Default: limit_rate 0;
Context: http, server, location, if in location

# 示例
limit_rate 4k;
  • limit_rate的用法非常简单,后面跟随的rate就是具体限速的阈值
  • 注意默认的单位是bytes/s,也就是每秒传输的字节数Bytes而不是比特数bits
  • 限速指令的生效范围是根据每个连接确定的,例如上面限定每个连接的速率为4k,也就是当客户端发起两个连接的时候,速率就可以变为8k

1, limit_rate_after允许在传输了一部分数据之后再进行限速,例如下面的配置中就是传输的前500kbyte数据不限速,500k之后再进行限速。

1
2
3
4
5
6
7
8
9
# 语法配置
Syntax: limit_rate_after size;
Default: limit_rate_after 0;
Context: http, server, location, if in location
This directive appeared in version 0.8.0.

# 示例
limit_rate_after 500k;
limit_rate 50k;

2, proxy_limit_rate的基本原理和用法与limit_rate几乎一样,唯一不同的是proxy_limit_rate是限制nginx和后端upstream服务器之间的连接速率而limit_rate限制的是nginx和客户端之间的连接速率。需要注意的是proxy_limit_rate需要开启了proxy_buffering这个指令才会生效。

1
2
3
4
5
6
7
8
9
10
11
12
# 语法配置
Syntax: proxy_limit_rate rate;
Default: proxy_limit_rate 0;
Context: http, server, location
This directive appeared in version 1.7.7.

# 示例
location /video {
proxy_pass http://127.0.0.1:8080;
proxy_buffering on;
proxy_limit_rate 512k;
}