Apache仅使用混合HTTP和HTTPS虚拟主机

我在Debian 8上安装了Apache 2.4,只有几个仅基于名称的虚拟主机,而且(现在)只有一个HTTPS虚拟主机由Let's Encrypt证书签名。 此时受保护的虚拟主机运行良好,但是如果使用https://访问其他不受保护的虚拟主机,则会获得受保护的虚拟主机的内容。 有什么办法(在这种情况下)做一些redirect到HTTP或避免加载安全的虚拟主机网站的内容?

当然redirect从https到http是可能的:

 <VirtualHost *:443> ServerName www.example.com ServerAlias example.com SSLEngine on # All other SSL settings, just like in your working TLS VirtualHost. Redirect / http://www.example.com/ </VirtualHost> 

你只需要了解:

  • 这将首先给出警告“您的连接不是私人的”,因为HTTP Host:标头中的主机名与您的证书不符,即NET::ERR_CERT_COMMON_NAME_INVALID 。 当然,这是你已经得到的东西。
  • 普通用户不要在地址栏中inputhttp://https:// ,只需inputwww.example.com即可,默认情况下input为http:// 。 (实际上,有些用户甚至不知道地址栏,而是使用Googlesearch,然后select第一个结果。)

我宁愿创build一个带有一些默认页面的无所不在的虚拟主机,说明没有为该域configurationTLS站点。 通过使用获取apache2/sites-enabled (例如001-tls的文件名并使用<VirtualHost _default_:443> ,确保这是在工作的虚拟主机之前。

你是自相矛盾的 您无法使用“https”访问非安全的虚拟主机,默认情况下,HTTPS为端口443,在所有情况下都是SSL虚拟主机,那么您将始终loginSSL虚拟主机。