提问人:CafeHey 提问时间:9/2/2012 更新时间:2/17/2014 访问量:7475
在 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?
问:
请看 Heroku 文档中的这个链接:
https://devcenter.heroku.com/articles/avoiding-naked-domains-dns-arecords#subdomain-redirection
黄色方框说:
使用子域时,通过SSL(即 https://mydomain.com)直接向裸域发出的请求将遇到警告 重定向。这是意料之中的,并且可以通过仅通过循环来避免 并公布安全 URL 的子域格式。
这真的是唯一的解决方案吗?只是希望人们不要在没有 wwws 的情况下输入网址?
我遇到了几个问题,人们只是从 url 中删除子域以访问主页(在 https 上)并遇到 ssl 警告?
有没有人想出解决这个问题的方法?
答:
301 重定向是正确的方法,因为RFC1033指出您不能将区域顶点(根域)指向 CNAME 记录 - 它必须是 A 记录。
话虽如此,无论如何,都有DNS服务提供了这样做的可能性。我自己还没有尝试过,但CloudFlare提供了一个免费套餐,并在去年开始为区域顶点提供CNAME。
评论
到目前为止,我们发现的最好的想法是使用少量 nginx 配置设置两个 Amazon EC2 微型计算机实例。然后,预置两个弹性 IP 地址以指向这些 EC2 实例,并将 2 A 记录指向这些 IP 地址。这样,如果硬件出现问题,您始终可以将弹性 IP 指向另一台 EC2 计算机,而无需等待 DNS 传播。要 https://example.com 和 http://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 提供的优质服务。
评论
最好的选择是使用 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 上实现这一目标。
评论