_sefault_:443的Apache2.4优先级超过第一个*:443虚拟主机定义

时间:2018-04-10 12:01:50

标签: apache virtualhost apache2.4

我正在开发服务器上运行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。有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在Apache 2.4 <VirtualHost>指令中,字符串_default_*的别名。

http://httpd.apache.org/docs/2.4/mod/core.html#virtualhost