ngx_http_map_module 模块根据一个变量的值创建另一个新的变量,新的变量的值取决于映射条件。
指令
语法 | map string $variable { ... } |
默认 | |
环境 | http |
根据 string 指定的一个或多个源变量的值创建新的变量 $variable。
注:在 版本0.9.0 之前,第一个参数仅能指定一个变量。
注:由于变量仅会在用到它们的地方才会被评估,所以就算有很多的“map”,也不会给请求处理增加额外的消耗。
在 map块 内的参数指定了从源变量值到结果之间的一种简单的映射关系。源变量值用字符串或正则表达式的方式来指定。以“~”开始的正则表达式用于区分大小写匹配,以“~*”开始的正则表达式用于不区分大小写匹配。正则表达式还可以包含命名的或基于位置的捕捉组,它们可以随新变量一起在后续的指令中使用。
如果源值匹配下面将要描述的名字之一,那么该源变量应该以“\”开始以避免误解。
结果值可以是一个字符串或另一个变量(0.9.0)。
该指令也支持以下三个特殊的参数:
*.example.com 1; example.* 1;以下的记录
example.com 1; *.example.com 1;可以合并成如下一个:
.example.com 1;该参数应该放在值列表的最前面。
如果源变量的值能够匹配不只一个变体值,比如:同时匹配一个掩码或一个正则表达式,那么将会按如下的优先级顺序选择变体:
- 包含有掩码的字符串值
- 包含前缀掩码的最长的字符串,比如:“*.example.com”
- 包含后缀掩码的最长的字符串,比如:“mail.*”
- 第一个出现的正则表达式(按在配置文件中出现的顺序)
- 默认值
语法 | map_hash_bucket_size size; |
默认 | map_hash_bucket_size 32|64|128; |
环境 | http |
设置 map 指令变量的哈希表的大小。
默认大小依赖于处理器的缓存线(cache line)的大小。设置哈希表的详细文档见:哈希表文档。