nginx中文文档-ngx_stream_map_module

此页面版本:2016-07-05,577bcc35-cc0
ngx_stream_map_module 模块(1.11.2+)创建变量,其值取决于其他变量的值。

示例配置

map $remote_addr $limit {
    127.0.0.1    "";
    default      $binary_remote_addr;
}

limit_conn_zone $limit zone=addr:10m;
limit_conn addr 1;

map

语法:map string $variable { … }
默认:—
上下文:stream

创建新变量,其值依赖于指定在第一个参数中的一个或多个源变量。
由于变量只有在使用的时候会被计算,可以声明一个很大的变量映射表,而不会带来连接的额外开销。
在map块中的参数指定了一个源与结果值之间的映射关系。
源值定义为字符串或正则表达式。
字符串匹配忽略大小写。
正则表达式可以以“~”标识起始,表示大小写敏感的匹配,也可以以“~*”标识起始,表示大小写不敏感的匹配。一个正则表达式可以包含名称和位置捕获,稍后可以用于其他指令。
如果源值匹配任一个下面描述的特殊参数名,需要用“\”标识作为前缀。
结果值可以包含文本、变量以及它们的混合。
指令可以支持三种特殊参数:
default value
如果源值不匹配任何指定的变量,设置结果值。当没有指定default时,默认结果值是一个空字符串。

hostnames
表明源值可以是带前缀或后缀的主机名:

*.example.com 1;
example.*     1;

下面两个记录:

example.com   1;
*.example.com 1;

可以合并为:

.example.com  1;

该参数需要在列表值之前指定。

include file
包含一个含值的文件,可以有多个包含。

如果源值匹配超过一个定义的变量,例如同时匹配一个标记和正则表达式,先匹配的变量会被选中,按照下面的优先级:

  1. 没有标记的字符串值
  2. 最长的前缀标记字符串,例如“*.example.com”
  3. 最长的后缀标记字符串,例如“mail.*”
  4. 第一个匹配的正则表达式(按出现在配置文件中的顺序)
  5. 默认值

map_hash_bucket_size

语法:map_hash_bucket_size size
默认:map_hash_bucket_size 32|64|128
上下文:stream

为映射变量哈希表设置一个桶的大小。默认大小取决于处理器的缓存行大小。

map_hash_max_size

语法:map_hash_max_size size
默认:map_hash_max_size 2048
上下文:stream

设置变量映射哈希表的最大大小。