Nginx map模块

Map模块,通过映射新变量提供更多的可能性;ngx_http_map_module, 默认已编译进nginx 可通过–without-http_map_module禁用。

功能:基于已有变量,使用类似于switch { case: … default: … } 的语法创建新变量,为其他基于变量值实现功能的模块提供更多的可能性。

map 模块指令

Syntax: map string $variable { ... }
Default: ---
Context: http
注释:
string 可以是变量,也可以是字符串
$variable 提供的新变量,根据{}中的匹配规则,给新变量赋值。

Syntax: map_hash_bucket_size size;
Default: map_hash_bucket_size 32|64|128;
Context: http

Syntax: map_hash_max_size size;
Default: map_hash_max_size 2048;
Context: http

规则

已有变量

1、字符串
2、一个或多个变量
3、变量与字符串组合

case 规则

1、字符串严格匹配
2、使用hostnames指令,可以对域名使用前缀*泛域名匹配
3、使用hostnames指令,可以对域名使用后缀*泛域名匹配
4、~和~* 正则表达式匹配,后者忽略大小写

default 规则

1、没有匹配到任何规则时,使用default
2、缺失default时,返回空字符串给新变量

其他

1、使用include语法提升可读性
2、使用volatile禁止变量值缓存

配置示例:

map $http_host $name {
hostnames;
default 0;
www.pmworker.cn 1
*.pmworker.cn 2;
}

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

添加评论

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