我寻求一些帮助来弄清楚为什么我的 nginx 以这种方式对网站进行优先级排序。我的虚拟主机中有服务器块:
server { #site 1
listen 80;
server_name site1.testing.domain.com$;
root /var/www/site1/web;
# further config
}
server { #site 2
listen 80;
server_name ~^(www\.)?(?<sname>.+?).testing.domain.com$;
root /var/www/$sname/public;
# further fonfig
}
根据 nginx 文档,它应该优先考虑完全匹配的域,但是当我继续http://site1.testing.domain.com它从站点 2 加载配置。(如果我删除动态子域的配置,则站点 1 配置可以正常工作)。
有人可以解释一下我做错了什么或者为什么 nginx 会这样做吗?
答案1
我的猜测:第一个变体不匹配,因为$
在末尾server_name
,这是无效的,因为这不是一个正则表达式。