基于已有变量,使用类似switch{case: default:}的语法创建新变量,为其他基于变量值实现功能的模块提供更多的可能性。ngx_http_map_module,默认编译进Nginx,通过--without-http_map_module禁用。
map
map string $variable { ... }- string:相当于switch值,可以是变量和字符串
- $variable:映射后新的变量名
- {...}中规则
- case规则:字符串严格匹配;使用hostnames指令可以对域名使用前后*的泛域名匹配;
~和~*表示正则匹配。三者的优先级依次递减,泛域名前优先于后。
- default规则:没有匹配到任何规则时,使用default的值;缺失default时,使用空值。
- 逻辑很多时建议使用include,使用volatile禁止变量值缓存。
#判断http_host变量值映射成变量name,hostnames开启泛域名匹配
map $http_host $name {
hostnames;
default 0;
~map\.tao\w+\.org.cn 1; #正则
*.taohui.org.cn 2; #前缀泛域名
map.taohui.tech 3; #字符串
map.taohui.* 4; #后缀泛域名
}
#判断http_user_agent变量值映射成mobile变量
map $http_user_agent $mobile {
default 0;
"~Opera Mini" 1;
}「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




