nginx - Nginx map 指令只使用一个条件
问题描述
在 Nginx 中,我有两个都不能正常工作的地图块。
1-我想使用动态 ssl 证书,而且一个域有一个通配符证书。我认为这是可行的,但它始终使用通配符条件,而不是默认值:
map $host $ssl_server_name {
*.example.com 'example.com';
default $host;
}
//later ($ssl_server_name is always example.com)
ssl_certificate /home/ssl/$ssl_server_name/fullchain.pem;
ssl_certificate_key /home/ssl/$ssl_server_name/privkey.pem;
2-我只想为上述域设置标题,所以我使用了这个:
map $host $header_value {
default 'another_value';
*.example.com 'header_value';
}
// later ($header_value is always 'another_value')
proxy_set_header X-TEST-HEADER $header_value;
解决方案
ssl_server_name 上的映射,女巫是已知的。还要添加主机名。
map $ssl_server_name $ssl_server_name {
hostnames;
*.example.com 'example.com';
default $ssl_server_name;
}
ssl_certificate /home/ssl/$ssl_server_name/fullchain.pem;
ssl_certificate_key /home/ssl/$ssl_server_name/privkey.pem;