Nginx server_name能否使用双通配符匹配多个同格式域名
结论
你提到的*.google*.com写法不可行。
原因说明
Nginx对server_name的通配符匹配有明确的规则限制:通配符*仅允许放在域名的最前端(如*.example.com)或者最后端(如www.example.*),放在域名中间的*不会被识别为通配符,只会被当作普通字符处理,因此无法匹配*.google1.com、*.google2.com这类格式的域名。
替代简化方案
如果你想要简化配置,可以使用Nginx支持的正则匹配写法,示例如下:
server_name ~^.*\.google\d+\.com$;
上述规则里:
- 开头的
~表示后续内容为正则匹配规则 .*匹配任意前缀内容\d+匹配google后面的1个或多个数字,刚好覆盖你需要的google1、google2到googleN的场景
注意事项
正则匹配的优先级低于普通精确匹配、前缀通配符匹配、后缀通配符匹配,如果存在其他优先级更高的同域名相关server规则,需要注意调整顺序避免匹配冲突。
内容的提问来源于stack exchange,提问作者Bahis Kritik
相关产品推荐
相关产品推荐

