_default_:443 的 Apache2.4 优先于第一个 *:443 虚拟主机定义

Posted

技术标签:

【中文标题】_default_:443 的 Apache2.4 优先于第一个 *:443 虚拟主机定义【英文标题】:Apache2.4 precedence of _default_:443 over first *:443 virtualhost definition 【发布时间】:2018-09-20 01:02:25 【问题描述】:

我在一个开发服务器上运行 Apache 2.4.6,很长一段时间以来,它一直在许多开发服务器上愉快地托管许多 VirtualHost 站点 (*:443),主要的一个(其中碰巧是第一个)我们将调用<mainsite>.net(它运行的服务器与ServerName不匹配,所以<servername>.net将始终选择<servername>的默认虚拟主机,它应该是<mainsite> /p>

我最近添加了主站点 ServerAlias *.<mainsite> 的一个变体,其中 conf.d 文件为 <mainsite>-wild.conf,但一切都停止了工作。

问题似乎归结为<VirtualHost *:443 _default_:443> 在我的<mainsite>.conf 中与<mainsite>-wild.conf 中的<VirtualHost *:443> 的优先级。显然<mainsite>-wild.conf 在加载conf.d 时出现在<mainsite>.conf 之前。

我已经设法通过使用apachectl -S 来确定哪个站点具有“默认”标志来调试问题,奇怪的是它不一定是带有_default_ 的站点,它是第一个出现的站点conf.d 文件夹,这让我有些吃惊(如果 _default_ 被忽略,它有什么用)。

我的结论是我可以通过将<mainsite>.conf 重命名为00-<mainsite>.conf 来绕过这个问题,但我想知道的是为什么 Apache 忽略了_default_?仅仅是因为它的 *:443 吗?我认为在发布 SNI 的日子里这不再是问题了,这就引出了一个问题,这是 apache 中的错误吗?

我在网上搜索并发现没有讨论涉及 Apache 2.4(当 Listen/NameVirtualHost 设置更改时)或在 SNI 之后(在此之前您无法真正在 :443 上执行 VirtualHost,除非它们都共享证书),所以以为我会问 ***。有人有什么想法吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于_default_:443 的 Apache2.4 优先于第一个 *:443 虚拟主机定义的主要内容,如果未能解决你的问题,请参考以下文章

RedHat 6.5 离线安装 apache2.4.23

php5.6-Apache2.4-mysql5.6环境配置(win7_64位)

PID 4 的“无法打开进程”正在使用端口 443

apache2.4配置weblogic12c集群(linux)

Apache2.4配置ssl

LeetCode_443. String Compression