nginx中文文档-ngx_http_map_module

ngx_http_map_module模块创建依赖于其他变量值的变量。

示例配置

map $http_host $name {
    hostnames;

    default       0;

    example.com   1;
    *.example.com 1;
    example.org   2;
    *.example.org 2;
    .example.net  3;
    wap.*         4;
}

map $http_user_agent $mobile {
    default       0;
    "~Opera Mini" 1;
}

map

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

创建一个值依赖于第一个参数定义的变量值的变量。
在0.9.0版本之前,第一个参数只可定义一个变量。
由于变量只有在使用时取值,定义很多“map”变量并不会对请求的处理增加任何额外的开销。
在map块中的参数定义了一个源到结果的映射值。
源值定义为字符串或正则表达式(0.9.6+)
字符串匹配忽略大小写。
正则表达式可以以“~”标识开头表示大小写敏感,也可以以“~*”标识(1.0.4+)开头表示大小写不敏感。正则表达式可以包括名称和位置捕获,可在其他的指令中使用。
如果原值匹配下面描述的特殊参数名称之一,应该用“\”前缀。
结果值可以是字符串或另一个变量(0.9.0+)
指令可以支持三个特殊参数:
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
上下文:http

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

map_hash_max_size

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

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

请开启浏览器JavaScript