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)。