HTTP Limit Zone模块(HTTP Limit Zone)


·摘要

这个模块可以为一个地址指定的会话或者某些特殊情况限制同时连接数,
如下例:
 http {
  limit_zone   one  $binary_remote_addr  10m;
 
  server {
    location /download/ {
      limit_conn   one  1;
    }
  }
}

·指令

limit_zone

语法:limit_zone zone_name $variable memory_max_size
默认值:no
使用字段:http
指令描述会话状态存储区域。
会话的数目按照指定的变量来决定,它依赖于使用的变量大小和memory_max_size的值。
如下例:
limit_zone one $binary_remote_addr 10m;
客户端的地址将用于会话,注意$binary_remote_addr变量将替换$remote_addr而被使用。
$remote_addr 变量的值的长度可以是7到15字节,因此大小指定为32或64字节。
$binary_remote_addr 变量的值的长度总是4字节,大小总是32字节。
当会话状态储存区域为1M时理论上可以处理32000个会话,每个会话大小为32字节。

limit_conn

语法:limit_conn zone_name max_clients_per_ip
默认值:no
使用字段:http, server, location
指令指定一个会话的最大同时连接数,超过这个数字的请求将被返回"Service unavailable" (503)代码。
如下例:
limit_zone   one  $binary_remote_addr  10m;
 
server {
  location /download/ {
  limit_conn   one  1;
}
这将指定一个地址只能同时存在一个连接。

·参考文档

Original Documentation
Nginx Http Limit Zone Module

前进->HTTP Limit Requests模块(HTTP Limit Requests)