我最近为在 Heroku 上运行的 Rails 应用添加了 SSL 功能。我成功为我的域名购买并创建了证书,并在 GoDaddy 中使用 CNAME,当用户浏览 www.myappname.com 时,我的应用的 WWW 子域名可以正常工作
页面加载时没有任何警告,并且证书按预期工作。
CNAME 看起来如下所示: 主持人:万维网 指着:myappnamefoobar-1234.herokussl.com
然而,当我只是访问“裸”域名 - myappname.com 时,出现了证书错误。
如何在 GoDaddy 中配置 DNS 设置以使其正常工作?
https://devcenter.heroku.com/articles/avoiding-naked-domains-dns-arecords
Heroku 文档中有一整篇文章介绍裸域,但我不明白这如何适用于 GoDaddy 的 DNS 管理器。
我知道 Heroku 有某种基于 IP 的 SSL,每月费用为 100 美元,但还有其他方法可以实现这一点吗?
答案1
Heroku 上的根域需要使用 ALIAS ANAME 或 FLATTENING 记录。
不幸的是,许多流行的 DNS 主机(如 GoDaddy、Bluehost、Google Domains、OVH、Hostinger 等)都不支持这些类型的记录。许多提供商会告诉您没有 ALIAS、ANAME 或 FLATTENING 记录之类的东西,许多提供商会告诉您改为设置 A 记录;
Heroku 不支持 A 记录路由 A 记录需要静态 IP 地址,而静态 IP 地址不能与 Heroku 一起进行路由,因为 Heroku(和许多其他云平台)使用动态 IP。
替代选项 如果您的 DNS 提供商不允许您设置 ALIAS、ANAME 或 FLATTENING 记录,则可以使用多种选项让您的域名与 Heroku 协同工作。
1. 不要使用根域 这是最简单的解决方案。从技术上讲,只要您有一个设置了子域的自定义域,就不需要根域。例如,您有一个包含两个域的网站;根域 example.com 和子域www.example.com。在这种情况下,只要你有www.example.com设置后,不需要 example.com,因为用户可以通过以下方式访问您的网站www.example.com并设置www.example.com您需要使用所有 DNS 提供商都允许您设置的 CNAME 记录。
2. 将根域名重定向/转发到子域名 许多用户选择将流量从其根域重定向到子域,例如:重定向/转发 example.com >www.example.com。
但是:URL 重定向/转发选项仅适用于非 SSL 请求。这意味着:
请求http://example.com将成功重定向请求至https://example.com将因 SSL 错误而失败。
3. 使用备用 DNS 提供商 以下是允许设置 ALIAS ANAME 或 FLATTENING 记录的 DNS 提供商。其中许多 DNS 提供商都会提供有关如何使用 Heroku 的指南。例如,使用 Cloudflare 的 Flattening
DNSimple DNS Made Easy/Constellix easyDNS PointDNS namecheap Gandi.net Cloudflare - 注意:Cloudflare 使用 CNAME Flattening。这与 ALIAS 或 ANAME 记录相同
答案2
我认为这是不可能的。Heroku 目前强烈反对基于 IP 的域名,基于 IP 的 SSL 插件现已弃用,但 SSL 端点不适用于 IP,因此看起来他们正在放弃支持它。
简单的选项是从裸域重定向到 www. 域 - 但这在 http:// 上有效,但如果用户尝试使用 https:// 执行此操作,则可能会显示证书错误消息。这不是理想的选择,但确实有效。