nginx做下载服务,需要对下载速度做限制,Nginx如何限制带宽?
参考如下方法:
首先,在http{}的配置中添加一条:
表示限速100K每个客户端只允许一个线程
客户端最终速度=rate * conn,这样就可以完美的实现限制带宽的设置了。
详细的官方规则:
http://wiki.nginx.org/NginxChsHttpLimit_zoneModule
nginx_limit_speed_module模块如何对location总带宽和每个IP速度的限制。
nginx_limit_speed_module项目地址:https://github.com/yaoweibin/nginx_limit_speed_module
nginx nginx_limit_speed_module限制总带宽
1. 介绍
该模块能够限制从一个地址同时连接的总速度。
2. 指令介绍
limit_speed_zone
语法:limit_speed_zone zone_name $variable memory_max_size
默认值:no
配置段:http
定义会话状态存储空间。会话的数目由所分配的变量$variable决定,该值取决于memory_max_size值。
如:limit_speed_zone one $binary_remote_addr 10m;
客户端的地址被用作会话。注意:该变量$binary_remote_addr是用来代替$remote_addr。
$remote_addr变量值的长度是7到15个字节。因此状态大小等于32或64字节。
$binary_remote_addr变量值的长度总是4个字节,因此状态大小始终是32字节。
1M共享空间可以处理3.2万个会话,每个会话32字节。
limit_speed
语法:limit_speed zone_name max_speed
默认值:no
配置段:http,server,location
该指令指定同一个IP的最大速度。
例如:如果限制每个IP地址的最大速度为100KB,同时同一个IP有10个并发连接,那么每个连接的速度为10KB。
3. 安装方法
4. 实例
http {
limit_speed_zone www_jbxue_com $binary_remote_addr 10m;
server {
location /download/ {
limit_speed www_jbxue_com 100k;
}
}
}