首页 > 解决方案 > 将 PointDNS 用于非 www 和处理 SSL

问题描述

我一直在使用 Heroku 来托管我的应用程序 (www.justbooked.com),而 godaddy 是存储域的位置。出于某种原因,最近非 www 版本,例如 justbooked.com 不再工作。

GoDaddy 似乎没有为根级域(example.com)提供 ANAME / ALIAS 或其他 CNAME 样式的功能。

我想知道如何让 justbooked.com 像 www.justbooked.com 一样工作。Godaddy 可以通过其他方式实现吗?请记住,我有 SSL 证书等...

如果 GoDaddy 无法做到这一点,那么使用 PointDNS 之类的东西可能会起作用,但我仍然不确定如何使用现有的 SSL 证书配置 PointDNS。

这里的任何帮助都会很棒,目标是让 justbooked.com(非 www)正常工作!!!

谢谢!

标签: ruby-on-railssslherokudnssubdomain

解决方案


我想你的问题现在可能已经解决了,但是为了帮助过去像你我这样的人(4周前我遇到同样的问题时发现了这个话题),我正在一步一步地写关于如何让 PointDNS 在 HTTPS 上为 www 和非 www 域工作的教程。在开始之前阅读所有步骤,包括注释。

  1. 通过 Heroku 的 UI 或使用 CLI 命令在您的项目中为 PointDNS 创建一个附加组件:heroku addons:create pointdns:developer
  2. 打开 Heroku 的 UI 并进入 PointDNS 仪表板。查找“名称服务器”选项卡并查看名称服务器列表。寻找最适合您的。
  3. 复制建议的名称服务器数量(不多也不少),转到您购买域的地方(在您的情况下为 GoDaddy)并编辑 DNS 服务器以指向 PointDNS。等待至少 2 小时以使这些更改生效。
  4. 通过 Heroku 的 UI 或使用 CLI 命令将您的 www 和非 www 域添加到 Heroku 自定义域列表:heroku domains:add justbooked.comheroku domains:add www.justbooked.com
  5. 复制每个域出现的两个 DNS 目标(以 结尾的那个.herokudns.com)。您可以通过 Heroku 的 UI 或使用 CLI 命令检查 DNS 目标:heroku domains
  6. 转到 PointDNS 仪表板并为根域(非 www)添加 ALIAS 记录,为 www 域添加 CNAME 记录;在每一个上,添加您在上一步中复制的对应 DNS 目标。也许这两个域的记录是在您添加 PointDNS 插件时自动创建的;在这种情况下,只需编辑 DNS 目标。
  7. 再等待 1 小时,然后 Heroku 将使用 ACM(自动证书管理)自动为您设置 SSL 证书。如果一切顺利,您现在应该让两个域都使用 HTTPS 协议。

笔记:

  1. 如果您有超过 1 个 Heroku 应用程序使用相同的 git 代码库,则需要--app在 Heroku CLI 命令中使用该标志。
  2. 你说你有一个现有的 SSL 证书。如果您想使用它而不是 ACM 提供的那个,您需要设置一个 SSL 端点。为此,在第 4 步之前,使用 CLI 命令创建一个:heroku addons:create ssl:endpoint. 之后,使用以下命令上传您的证书:heroku certs:add server.crt server.key --type endpoint. 在步骤 5中,使用 .而不是heroku domains命令heroku certs在步骤 6中使用端点 DNS 目标(以 结尾.ssl.herokudns.com)。
  3. 设置域和 SSL 证书后,您可能还希望将所有 HTTP 流量重定向到 HTTPS。您只能通过将重定向逻辑编码到您的应用程序中来做到这一点。在 Ruby on Rails 的情况下,您需要config.force_ssl = true在您的config/environments/production.rb或类似的地方使用。
  4. 您可能会看到很多教程使用.herokuapp.com链接而不是使用链接.herokudns.com作为 PointDNS 中的 DNS 目标。这可能适用于 HTTP 流量,但您的 HTTPS 会话将失败。.herokudns.com即使您只使用 HTTP(也许您正在使用免费托管计划),也请使用 HTTPS,因为稍后设置 HTTPS 会更容易。

参考:

  1. Heroku 开发中心:应用程序的自定义域名
  2. Heroku 开发中心:SSL 端点
  3. Heroku 帮助:Heroku 可以强制应用程序使用 SSL/TLS 吗?
  4. Heroku 开发中心:PointDNS(有点过时,但可能是一个很好的资源)

推荐阅读