前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何限制 Nginx下载速率?

如何限制 Nginx下载速率?

作者头像
用户1560186
发布2019-12-04 19:39:35
6.9K0
发布2019-12-04 19:39:35
举报
文章被收录于专栏:运维录运维录

默认情况下你的服务器有多少网络带宽(上行),Nginx就能消耗掉多少,来者不拒。

假设你的服务商为你的服务器提供 10Mbit/s上下行对等的网络带宽,你希望通过HTTP方式从你的VPS服务器下载2GB的备份文件。

那么你会得到大约 1.25MB/s左右的下载速度(1Byte等于8Bit),这个下载速度确实很爽。

但是这带来了另外一个问题,由于你下载文件占用了VPS服务器全部网络带宽,那么其他用户将无法访问你的服务器,或者访问速度非常缓慢。

你可以把上面的场景替换到公司某些业务上,这样的结果是我们不能接受的,所以需要一种机制,它能够限制每个HTTP连接所使用的最大速率(带宽)。例如将示例中最大下载速度限制在 512KB/s

操作步骤

1. nginx配置文件

代码语言:javascript
复制
cat /etc/nginx/conf.d/default.conf

server {

    #..其它配置项目省略

    location /download {
        limit_rate 512k;
    }

    #..其它配置项目省略
}

还可以再优化一下,例如 前10MB 不限速,超过则开始限速。

代码语言:javascript
复制
server {

    #..其它配置项目省略
    
    location /download {
             limit_rate_after 10240K;
        limit_rate 512k;
    }
}

2. 重启 nginx

代码语言:javascript
复制
nginx -t && nginx reload

3. 验证

最大下载速度限制在 512KB/s 以内。

限速相关指令

1. limit_rate 指令

代码语言:javascript
复制
语法: limit_rate rate;
默认值: limit_rate 0;
使用字段: http, server, location, if in location
功能: 该指令用于限制向客户端传输数据的速度,单位是Byte/s每秒传输的字节数,设置0禁用限制功能。

2. limit_rate_after 指令

代码语言:javascript
复制
语法: limit_rate_after size;
默认值: limit_rate_after 0;
使用字段: http, server, location, if in location
功能: 该指令用于设置一个阀值,当达到条件(字节)后开始限速。
注意事项

需要注意的是,上面的限制指令只是针对一个连接的设定,如果客户端使用两个连接(并发),那么总速率将会是该指令设置值的两倍。

不过nginx 提供了一个另外一个模块 ngx_http_limit_conn_module 用于限制连接数。

参考文档

http://nginx.org/en/docs/http/ngx_http_core_module.html

http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

小结

最后来总结下文章中的知识点

  • limit_rate 指令用于配置限速功能,单位Byte/s
  • 配合 limit_rate_after指令,可以在触发规则后启用限速功能。
  • 限速功能只能限制单个HTTP连接,可以配合限制连接数模块使用。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 操作步骤
  • 限速相关指令
  • 注意事项
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档