Nginx下载限速

  • Nginx v1.1.8版本之前

修改Nginx配置文件

http { 
  limit_zone   one  $binary_remote_addr  10m;  
  server { 
    location /download/ { 
      limit_conn   one  1; 
      limit_rate 300k; 
    } 
  } 
}

但是v1.1.8版本之后再这么配置的话会报错unknown directive "limit_zone" in /etc/nginx/nginx.conf:34

  • 新版本
http { 
  limit_conn_zone $binary_remote_addr zone=one:10m; #容器共使用10M的内存来对于IP传输开销
  server { 
    location /download/ { 
      limit_conn   one  4;  #限制每个IP只能发起四个并发连接
      limit_rate 800k;   #对每个连接限速300k。

    } 
  } 
} 


#注意,这里是对连接限速,而不是对IP限速。
#如果一个IP允许四个并发连接,那么这个IP就是限速limit_rate×4。
#定义一个叫“one”的记录区,总容量为 10M,以变量 $binary_remote_addr 作为会话的判断基准。(即一个地址一个会话)。


#您可以注意到了,在这里使用的是 $binary_remote_addr 而不是 $remote_addr。

# $remote_addr 的长度为 7 至 15 bytes,会话信息的长度为 32 或 64 bytes。而$binary_remote_addr 的长度为 4 bytes,会话信息的长度为 32 bytes。

  #当区的大小为 1M 的时候,大约可以记录 32000 个会话信息(一个会话占用 32 bytes)。

  • 测试结果
    当连接数超过配置值时,Nginx会报错如下图。
    Nginx下载限速_第1张图片

你可能感兴趣的:(Linux)