【问题标题】:Using PointDNS for non-www and handling SSL将 PointDNS 用于非 www 和处理 SSL
【发布时间】:2018-12-24 08:55:18
【问题描述】:

我一直在使用 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)正常工作!!!

谢谢!

【问题讨论】:

  • 两者在这里都可以正常工作(少 SSL);尝试刷新您的 DNS 缓存。你不需要弄乱你的 DNS 来让 SSL 工作。如果你有configured everything correctly with Herkou,它应该可以工作。
  • 现在好像可以工作了。

标签: ruby-on-rails ssl heroku dns subdomain


【解决方案1】:

通过 pointdns 指向任何网站时,您可以使用两种方式,一种是通过 cname,另一种是使用 pointDNS 等服务。如果您想专门在 justbooked.com 等裸域上运行 SSL,您需要在此处指向 DNS

PointDNS 配置非常简单,只需将来自 godaddy 的 dns 记录添加到 pointDNS

对于 SSL ,您可以使用 ACM 或在 heroku 设置中添加自己的证书。ACM 使用 let's encrypt SSL,它是免费的,但不允许通配符 SSL。

【讨论】:

    【解决方案2】:

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

    参考资料:

    1. Heroku Dev Center: Custom Domain Names for Apps
    2. Heroku Dev Center: SSL Endpoint
    3. Heroku Help: Can Heroku force an application to use SSL/TLS?
    4. Heroku Dev Center: PointDNS(有点过时,但可以成为一个很好的资源)

    【讨论】:

      猜你喜欢
      • 2017-06-18
      • 2016-04-02
      • 1970-01-01
      • 2019-01-28
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多