limit_rate/limit_rate_after

说明

  • 局限性:这两个参数只能针对单个连接进行限流。比如限流为 20k,当客户端同时建立 3 个连接进行访问时,实际最大流量可能为 60k
  • limit_rate:限制给客户端返回结果的速度
  • limit_rate_after:限制当给客户端返回多少数据包之后,才进行限速

limit_rate

  • 语法:
1
2
3
4
语法:	limit_rate rate;
默认值:	
limit_rate 0;
上下文:	http, server, location, if in location
  • 例:
1
2
3
4
5
6
7
server{
    location ~* ^/module/api_path {
        # 限制这个接口给客户端返回数据的速度为 20k
        limit_rate 20k;
        proxy_pass http://proxy_server;
    }
}
  • 也可以利用$limit_rate变量设置流量限制。如果想在特定条件下限制响应传输速率,可以使用这个功能:
1
2
3
4
5
6
server {
    if ($slow) {
        set $limit_rate 4k;
    }
    ...
}

limit_rate_after

  • 语法
1
2
3
4
语法:	limit_rate_after size;
默认值:	
limit_rate_after 0;
上下文:	http, server, location, if in location
1
2
3
4
5
6
7
8
server{
    location ~* ^/module/api_path {
        # 限制当给客户端返回 500k 数据之后,才开始限速
        limit_rate_after 500k;
        limit_rate 20k;
        proxy_pass http://proxy_server;
    }
}

参考