ruby-on-rails - 将 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)正常工作!!!
谢谢!
解决方案
我想你的问题现在可能已经解决了,但是为了帮助过去像你我这样的人(4周前我遇到同样的问题时发现了这个话题),我正在一步一步地写关于如何让 PointDNS 在 HTTPS 上为 www 和非 www 域工作的教程。在开始之前阅读所有步骤,包括注释。
- 通过 Heroku 的 UI 或使用 CLI 命令在您的项目中为 PointDNS 创建一个附加组件:
heroku addons:create pointdns:developer
- 打开 Heroku 的 UI 并进入 PointDNS 仪表板。查找“名称服务器”选项卡并查看名称服务器列表。寻找最适合您的。
- 复制建议的名称服务器数量(不多也不少),转到您购买域的地方(在您的情况下为 GoDaddy)并编辑 DNS 服务器以指向 PointDNS。等待至少 2 小时以使这些更改生效。
- 通过 Heroku 的 UI 或使用 CLI 命令将您的 www 和非 www 域添加到 Heroku 自定义域列表:
heroku domains:add justbooked.com
和heroku domains:add www.justbooked.com
- 复制每个域出现的两个 DNS 目标(以 结尾的那个
.herokudns.com
)。您可以通过 Heroku 的 UI 或使用 CLI 命令检查 DNS 目标:heroku domains
- 转到 PointDNS 仪表板并为根域(非 www)添加 ALIAS 记录,为 www 域添加 CNAME 记录;在每一个上,添加您在上一步中复制的对应 DNS 目标。也许这两个域的记录是在您添加 PointDNS 插件时自动创建的;在这种情况下,只需编辑 DNS 目标。
- 再等待 1 小时,然后 Heroku 将使用 ACM(自动证书管理)自动为您设置 SSL 证书。如果一切顺利,您现在应该让两个域都使用 HTTPS 协议。
笔记:
- 如果您有超过 1 个 Heroku 应用程序使用相同的 git 代码库,则需要
--app
在 Heroku CLI 命令中使用该标志。 - 你说你有一个现有的 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
)。 - 设置域和 SSL 证书后,您可能还希望将所有 HTTP 流量重定向到 HTTPS。您只能通过将重定向逻辑编码到您的应用程序中来做到这一点。在 Ruby on Rails 的情况下,您需要
config.force_ssl = true
在您的config/environments/production.rb
或类似的地方使用。 - 您可能会看到很多教程使用
.herokuapp.com
链接而不是使用链接.herokudns.com
作为 PointDNS 中的 DNS 目标。这可能适用于 HTTP 流量,但您的 HTTPS 会话将失败。.herokudns.com
即使您只使用 HTTP(也许您正在使用免费托管计划),也请使用 HTTPS,因为稍后设置 HTTPS 会更容易。
参考:
推荐阅读
- kotlin - 如何使用 kotlinx.serialization 拦截反序列化
- prisma - 在 Prisma 中更新多对多关系
- ms-word - ms-word 对象模型:自定义拼写检查下划线
- android-jetpack-compose - Snackbar 永远不会被解雇 (Jetpack Compose SnackbarHostState)
- python - 图中的并联电阻(电路的节点表示)
- sapui5 - 消息管理器中的重复消息
- python - 尝试使用 BS4 从 Trustpilot 抓取日期时出现以下 JSON 错误 - Python
- typescript - 如何在打字稿中将值从类装饰器注入方法装饰器?
- meteor - ostrio:在 Meteor 上使用 Dropbox 的文件
- azureservicebus - 如何限制每分钟订阅内消耗的消息数