我在 Apache 服务器上托管了几个网站(例如http://www.example.com),其中只有一个具有 SSL 证书(例如https://www.example.net)。是否可以设置 Apache,以便尝试浏览到https://www.example.com不会导致 Apache 服务https://www.example.net? 如果是,怎么办?
我之所以问这个问题,是因为我的托管服务提供商声明:
...如果尝试与服务器上的任何 IP 建立 SSL 连接,并且该域没有可用的 SSL 虚拟主机,它将连接到列出的第一个可用的 SSL 虚拟主机。...如果机器上有多个 SSL 虚拟主机,当没有匹配时,它将自动连接到 httpd.conf 文件中显示的第一个虚拟主机。
答案1
默认情况下,您根本不会获得重定向,但正如您的托管服务提供商所述:如果没有为域名配置虚拟主机,则第一个 VirtualHost 是显示的默认虚拟主机。这是在您忽略 Web 浏览器生成的 SSL 警告之后...
如果您仅启用了 SSL/TLS,则www.example.net
连接到时将显示该站点https://any-domain
或https://<ip-address of your server>
。
因此,在有效域名的 VirtualHost 节之前设置一个空白网站作为第一个 VirtualHost 是很常见的。
<VirtualHost *:443>
ServerName localhost
DocumentRoot /var/www/empty
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.net
DocumentRoot /var/www/example.net
</VirtualHost>