在 heroku 上,是否绝对没有办法将 heroku 上的 https 裸域重定向到带有 wwws 的非裸域?

On heroku, is there absolutely no way to redirect an https naked domain on heroku to it's non naked domain with wwws?

提问人:CafeHey 提问时间:9/2/2012 更新时间:2/17/2014 访问量:7475

问:

请看 Heroku 文档中的这个链接:

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

黄色方框说:

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

这真的是唯一的解决方案吗?只是希望人们不要在没有 wwws 的情况下输入网址?

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

有没有人想出解决这个问题的方法?

SSL Heroku HTTPS 子域 SSL-Certificate

评论


答:

2赞 Legogris 9/2/2012 #1

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

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

评论

0赞 CafeHey 9/4/2012
不过,Heroku 强烈建议不要使用 A 记录。
0赞 maletor 9/13/2012
CloudFlare 和 Amazon Route 53 目前提供的服务称为别名记录,从技术上讲仍然有效。所有的魔法都是在他们这边处理的。据我了解,这只是一个 TTL 非常低的 A 记录。
2赞 Uri Klar 8/21/2014
@maletor是否可以将此配置与 Route 53、SSL 和裸域一起使用?因为目前,当我访问 example.com 时,这正在以错误解决。我缺少一些神奇的配置吗?
0赞 maletor 8/22/2014
Uri,你最好发布一个新问题。但是,为了使 DNS 正常工作,请确保您具有 ELB 设置,并且裸域的 DNS 指向 ELB。就是这样。
11赞 maletor 9/10/2012 #2

到目前为止,我们发现的最好的想法是使用少量 nginx 配置设置两个 Amazon EC2 微型计算机实例。然后,预置两个弹性 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 提供的优质服务。

评论

0赞 CafeHey 8/24/2013
您能否更详细地介绍一下如何实现这一点,wwwizer 似乎反其道而行之。www ---> nonwww
0赞 maletor 8/24/2013
wwwizer 支持两种方式。上面的代码是独立于其他任何代码的。您所需要的只是一台非常小的计算机和 nginx 配置,您就拥有了自己的重定向。
0赞 Augiwan 1/23/2014
wwwizer 的免费服务在将 https 裸域重定向到 https 非裸 (www) 域时是否会发出安全警告?(已为 www 子域购买了 SSL 证书)
0赞 maletor 1/23/2014
是的。只有付费服务允许 HTTPS。您的证书可能与裸域配合得很好(它已注册为 SAN)。
9赞 Ryan Daigle 2/22/2013 #3

最好的选择是使用 DNSimple 的 ALIAS 记录类型,它为 CNAME 记录提供根域支持。

然后,您可以像这样设置记录(假设使用 SSL 端点进行 SSL)。

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

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

也请留意使用 AWS Route 53 作为 Heroku 应用程序的 DNS。我相信很快就会在 R53 上实现这一目标。

评论

0赞 findchris 2/22/2013
FWIW,我采纳了这个建议,并使用 DNSMadeEasy 的 ANAME 记录类型应用了相同的建议。目前为止,一切都好。
1赞 maletor 3/8/2013
您不希望同时使用这样的 ALIAS 和 CNAME,因为这意味着两个域将在不同的域名下提供相同的内容。谷歌不喜欢这样,会降低你的搜索排名。Google 会为任何重复内容添加积分。
0赞 Beni Cherniavsky-Paskin 8/19/2015
您可以像这样设置 ALIAS 和 CNAME,然后在 heroku 应用程序中实现重定向到其中之一。