使Apache不在端口443上侦听某些域

时间:2016-09-07 09:19:08

标签: apache redirect ssl mod-rewrite lets-encrypt

我有一个Apache服务器设置为在端口80上监听几个域,在其中两个域上监听443(至少这是我想要的)。 所以我有我的Virtualhost *:443,带有“my-ssl-domain.com”和“my-other-ssl-domain.com”ServerName。两个域都有一个Virtualhost *:80,只需使用mod_rewrite重定向到HTTPS版本。我正在使用let加密它们。

我还有多个(> 10)其他域,只能通过HTTP工作。

如果我去“https://www.my-non-ssl-domain.com”浏览器抱怨没有有效的证书,会发生什么。谷歌似乎也索引该页面,我想避免它,因为它似乎是糟糕的搜索引擎优化。

我希望301将“https://www.my-non-ssl-domain.com”重定向到“http://www.my-non-ssl-domain.com”或至少根本不回答,就像使用HTTPS的域根本不存在一样。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果没有正确的证书,就没有办法对https://请求做出响应(没有警告),这就是协议的工作原理。 有几种选择,但它们都不适合您:

  1. 有两个公共IP地址,一个用于http + https的网站,另一个用于http。然后将Apache配置为仅在第一个端口443上侦听。

  2. 让加密证书成本(几乎)没有任何成本,所以只需去获取所有域名的证书(即使您出于某种原因不想在{{1}上提供内容},至少您可以将访问者正确地重定向到https网站

  3. 我不知道SEO的后果,但是如果你这样配置默认的http(你需要把它放在第一个由Apache加载的VirtualHost:443中,最好把它放到它位于<VirtualHost *:443>)的底部:

  4. httpd.conf

    在这种情况下,客户端不会收到证书不匹配警告(<VirtualHost *:443> ServerName non.existing_host.noTld </VirtualHost> ),由于SSL协议错误(NET::ERR_CERT_COMMON_NAME_INVALID),它们将被解除连接,这可能会或可能不会更好的SEO,我真的不知道。