当我尝试时,后面的定义似乎生效了。问题是,这样做会产生意想不到的后果吗?
http {
map $http_host $a {
hostnames;
default 1;
example.com 1;
*.example.com 2;
}
map $http_host $a {
hostnames;
default 3;
example.com 3;
*.example.com 4;
}
server {
server_name example.com *.example.com
location / {
echo $a
}
}
}
现在,如果我尝试使用此配置:
curl http://example.com
3
curl http://www.example.com
4
背景:我们使用它来为可选包含文件中的地图提供覆盖。因此,在定义映射之后,我们有一个 *_override_map.conf 的包含指令。如果此文件存在并为同一地图提供了替代定义,那么这就是使用的内容,而不是原始地图定义。