nginx map指令使用

警告
本文最后更新于 2021-01-15 13:13,文中内容可能已过时。

语法:map string $variable { ... } 配置字段:http

含义: 匹配第一个参数,将自己指定的结果赋值给第二个参数

举例: 如果$http_user_agent的值与~Opera Mini匹配成功,$mobile的值就是1。否则$mobile的值就是0

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

对于区分大小写的匹配,正则表达式应从~符号开始,对于不区分大小写的匹配,正则表达式应从~*符号开始。

map还支持以下特殊参数:

1
2
default value
如果源值不匹配任何指定的变体,则设置结果值。如果未指定default,则默认结果值为空字符串。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
hostnames
指示源值是带有前缀或后缀的主机名(xxx.com,xxx.cn,www.xxx.cn)

使用hostnames后,匹配域名时可以使用通配符
*.xxx.com
xxx.com
xxx.*

#上面的配置也可以简写成#############
.xxx.com
xxx.*

最终在配置文件中呈现

1
2
3
4
5
6
map $http_referer $referer_ok {
    hostnames;
    .xxx.com 1;
    xxx.* 1;
    default 0;
}
1
2
include file
引入一个变量文件
1
2
volatile
指明该变量不可缓存
请我喝杯水
SoulChild 微信号 微信号
SoulChild 微信打赏 微信打赏
0%