Nginx带宽控制(限速模块使用)
有个老项目,通过 Squid 提供文件下载功能,利用 实现带宽控制,问题是我玩不转 Squid,于是盘算着是不是能在 Nginx 里找到类似的功能。
好消息是 Nginx 提供了 和,举个例子来说明一下:
代码如下:
location /download/ {
limit_rate_after 500k;
limit_rate 50k;
}
limit_rate_after 500k;
limit_rate 50k;
}
大概意思是:用户下载达到 500k 后,便控制其速度在 50k 以内。
坏消息是此控制是针对单个连接而言的。换言之,只能限制单个连接的带宽,不能限制总带宽。不过使用模块的话,可以在一定程度上缓解问题:
代码如下:
limit_conn_zone $server_name zone=servers:10m;
server {
location /download/ {
limit_conn servers 1000;
limit_rate_after 500k;
limit_rate 50k;
}
}