Apache 混合了 HTTP 和 HTTPS 虚拟主机

Apache 混合了 HTTP 和 HTTPS 虚拟主机

我在 Debian 8 上安装了 Apache 2.4,并且有几个仅基于 HTTP 名称的虚拟主机,并且(目前)只有 1 个由 Let's Encrypt 证书签名的 HTTPS 虚拟主机。目前,安全虚拟主机运行良好,但如果我访问其他非安全虚拟主机,https://我会获得安全虚拟主机的内容。有没有办法(在这种情况下)重定向到 HTTP 或避免加载安全虚拟主机站点的内容?

答案1

当然,可以通过以下方式从 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>

你只需要明白:

  • 这将首先给出警告“您的连接不是私密的”,因为 HTTPHost:标头中的主机名与您的证书不匹配,即NET::ERR_CERT_COMMON_NAME_INVALID。当然这是您已经得到的。
  • 普通用户不会在地址栏中写http://或,只会写,默认情况下会用 完成。(实际上,有些用户甚至不知道地址栏,而是使用 Google 搜索,然后选择第一个结果。)https://www.example.comhttp://

我宁愿创建一个包含所有信息的虚拟主机,并添加一些默认页面来解释此域未配置任何站点。通过使用在 上最先出现的文件名,例如并使用,TLS确保此页面位于工作虚拟主机之前。apache2/sites-enabled001-tls<VirtualHost _default_:443>

答案2

您自相矛盾了。您无法使用“https”访问非安全虚拟主机,默认情况下 https 表示端口 443,即 SSL 虚拟主机,但在极少数情况下,您将始终进入 SSL 虚拟主机。

相关内容