【问题标题】:On heroku, is there absolutely no way to redirect an https naked domain on heroku to it's non naked domain with wwws?在heroku上,绝对没有办法将heroku上的https裸域重定向到带有wwws的非裸域?
【发布时间】:2012-08-27 12:41:32
【问题描述】:

查看 Heroku 文档中的此链接:

https://devcenter.heroku.com/articles/avoiding-naked-domains-dns-arecords#subdomain-redirection

黄色框表示:

通过 SSL 直接向裸域发出的请求(即 https://mydomain.com) 使用子域时会遇到警告 重定向。这是意料之中的,并且可以通过仅循环来避免 并公开您的安全 URL 的子域格式。

这真的是唯一的解决方案吗?只是希望人们不要输入没有wwws的url?

我遇到了几个问题,人们只是从 url 中删除子域以访问主页(在 https 上)并遇到 ssl 警告?

还有其他人想出办法解决这个问题吗?

【问题讨论】:

    标签: ssl heroku https subdomain ssl-certificate


    【解决方案1】:

    到目前为止,我们发现的最好的想法是设置两个 Amazon EC2 微型机器实例,并使用少量 nginx 配置。然后,配置两个弹性 IP 地址以指向这些 EC2 实例,并将点 2 A 记录指向这些 IP 地址。这样,如果硬件出现问题,您始终可以将弹性 IP 指向另一台 EC2 机器,而无需等待 DNS 传播。访问 https://example.comhttp://example.com 的用户将收到 301 到域并且没有 SSL 警告。

    server {
      listen 80;
      listen 443 default_server ssl;
      server_name example.com;
      ssl_certificate server.crt;
      ssl_certificate_key server.key;
      return 301 https://www.example.com$request_uri;
    }
    

    另一个想法是使用wwwizer提供的优质服务。

    【讨论】:

    • 您能否详细介绍一下如何实现这一点,wwwizer 似乎反其道而行之。 www ---> 非www
    • wwwizer 支持这两种方式。上面的代码独立于其他任何东西。您所需要的只是一台非常小的计算机和 nginx 配置,并且您有自己的重定向。
    • 在将 https 裸域重定向到 https 非裸 (www) 域时,wwwizer 的免费服务是否会发出安全警告? (已为www子域购买ssl证书)
    • 是的。只有付费服务允许 HTTPS。您的证书可能完全适用于裸域(它已注册为 SAN)。
    【解决方案2】:

    最好的选择是使用像 DNSimple 的 ALIAS record type 这样的东西,它为 CNAME 记录提供根域支持。

    然后您可以像这样设置您的记录(假设将SSL Endpoint 用于 SSL)。

    | type  | name | target                  |
    | ALIAS |      | tokyo-123.herokussl.com |
    | CNAME | www  | tokyo-123.herokussl.com |
    

    虽然有其他 DNS 提供商提供类似的 ALIAS 记录功能(例如 DNSMadeEasy 的 ANAME),但它不在 DNS 规范中。这就是为什么我们尚未提供有关使用此类记录的详尽文档的原因。但是,鉴于缺乏对需要根域支持的人的明确指导,我们的目标是在不久的将来纠正此问题。

    也请留意using AWS Route 53 as your Heroku app's DNS。我相信很快就能在 R53 上实现这一目标。

    【讨论】:

    • FWIW,我接受了这个建议,并使用 DNSMadeEasy 的 ANAME 记录类型应用了相同的建议。到目前为止,一切顺利。
    • 您不希望同时使用这样的 ALIAS 和 CNAME,因为这意味着两个域将在不同的域名下提供相同的内容。谷歌喜欢这样,会降低你的搜索排名。 Google 会为任何重复的内容扣分。
    • 您可以像这样设置 ALIAS 和 CNAME,然后在您的 heroku 应用程序中实现重定向到其中之一。
    【解决方案3】:

    301 重定向是正确的方法,因为 RFC1033 指出您不能将区域顶点(根域)指向 CNAME 记录 - 它必须是 A 记录。

    话虽如此,但无论如何都有 DNS 服务提供了这样做的可能性。我自己还没有尝试过,但CloudFlare 提供了免费层级,并于去年开始为区域顶点提供 CNAME。

    【讨论】:

    • Heroku 强烈建议不要使用 A 记录。
    • CloudFlare 和 Amazon Route 53 目前提供的服务被称为别名记录,在技术上仍然有效。所有的魔法都在他们的最后处理。据我了解,这只是一个 TTL 非常低的 A 记录。
    • @maletor 是否可以将此配置与 Route 53、SSL 和裸域一起使用?因为目前当我访问example.com 时,这正在解决一个错误。我缺少一些神奇的配置吗?
    • Uri,你最好发布一个新问题。但为了使 DNS 正常工作,请确保您有 ELB 设置,并且裸域的 DNS 指向 ELB。就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2013-08-21
    • 2013-11-01
    • 2021-07-30
    • 2017-07-17
    • 2012-11-08
    • 1970-01-01
    相关资源
    最近更新 更多