我正在开发服务器上运行Apache 2.4.6,该服务器已经在很多开发服务器上托管了许多VirtualHost
站点(*:443)很长一段时间了,主要的一个(碰巧按字母顺序排在第一位)我们会调用<mainsite>.net
(它运行的服务器与ServerName
不匹配,因此<servername>.net
将始终在{{1}处获取默认的虚拟主机},应该是<servername>
我最近添加了主网站的变体<mainsite>
,其中conf.d文件为ServerAlias *.<mainsite>
,一切都停止了。
问题似乎归结为<mainsite>-wild.conf
的{{1}}优先于<VirtualHost *:443 _default_:443>
<mainsite>.conf
<VirtualHost *:443>
。加载<mainsite>-wild.conf
时,显然<mainsite>-wild.conf
出现在<mainsite>.conf
之前。
我设法通过使用conf.d
来识别哪个网站具有“默认”标记来调试该问题,奇怪的是它不一定是apachectl -S
中的那个,它是一个它在conf.d文件夹中首先出现,这让我有些失望(如果_default_
被忽略,那么它是什么)。
我得出的结论是,我可以通过将_default_
重命名为<mainsite>.conf
来绕过这个问题,但我想知道的是为什么Apache会忽略00-<mainsite>.conf
?是因为它的*:443?我认为在SNI之后的日子里不再是一个问题了,这问题就是这个问题,这是apache中的一个错误吗?
我在网上搜索,发现没有讨论涉及Apache 2.4的优先级(当Listen / NameVirtualHost设置发生变化时)或SNI之后(之前你无法真正开启VirtualHost:443,除非他们都共享证书),所以以为我会问StackOverflow。有人有什么想法吗?
答案 0 :(得分:0)
在Apache 2.4 <VirtualHost>
指令中,字符串_default_
是*
的别名。