我在一台服务器上设置了多个具有不同 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>