暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Nginx中map的使用

我为啥没洁癖 2024-03-25
260

基于已有变量,使用类似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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论