Apache 2.4 SSL VirtualHosts 且无默认登录页面

Apache 2.4 SSL VirtualHosts 且无默认登录页面

我在一台服务器上设置了多个具有不同 SSL 证书的子域/域,但遇到了问题。即 VirtualHost *:443 被忽略,并且加载了第一个 VirtualHost。

我的初始设置是这样的:

 <VirtualHost *:443>
    ServerName a1.domain.com
    ....
    SSLCertificateFile    /etc/ssl/domain.crt
    ....
 </VirtualHost>
 <VirtualHost *:443>
    ServerName a2.domain.com
    ....
    SSLCertificateFile    /etc/ssl/domain.crt
    ....
 </VirtualHost>

但是当我添加像这样的独立域时

 <VirtualHost *:443>
    ServerName new-domain.com
    ....
    SSLCertificateFile    /etc/ssl/new-domain.crt
    ....
 </VirtualHost>

一切都变得一团糟。之前的每个域名都试图获取证书文件 new-domain.crt... 我不知道为什么... 所以我想好吧,让我们修复它,我把所有 VirtualHosts 都改成这样:

 <VirtualHost a1.domain.com:443>
    ServerName a1.domain.com
    ....
    SSLCertificateFile    /etc/ssl/domain.crt
    ....
 </VirtualHost>
 <VirtualHost a2.domain.com:443>
    ServerName a2.domain.com
    ....
    SSLCertificateFile    /etc/ssl/domain.crt
    ....
 </VirtualHost>
 <VirtualHost new-domain.com:443>
    ServerName new-domain.com
    ....
    SSLCertificateFile    /etc/ssl/new-domain.crt
    ....
 </VirtualHost>

证书开始起作用了......但是我也有这样的条目:

 <VirtualHost _default_:443>
     ServerName root-domain.com
     ...
     # here it points to default landing page
 </VirtualHost>

在我做出更改之前,所有到不存在的 axxx.domain.com 的默认流量(如果我仅使用 IP)都进入默认但现在它最终出现在 a1.domain.com (如果我使用,它会被列为第一个apache2ctl -S)。

我认为我的初始设置是配置错误的情况,并且它像我“偶然”想要的那样工作,但我不知道现在如何让它工作......

PS VirtualHostName 已弃用,所以我无法使用它......

答案1

每个虚拟域的服务器别名在哪里?

很明显,如果您从未告诉 apache 配置了多少个不同的域,apache 将为第一个域提供服务。

你只能用一种方式来说明这一点,即别名:

ServerAlias example.com

此外,您不需要在以下位置声明域名:

 <VirtualHost a1.domain.com:443>

这已经足够了:

 <VirtualHost *:443>

相关内容