如何在heroku应用程序中指向域

虽然我已经在我的VPS上做了这个,但我从来没有为heroku应用程序做过这个,现在我必须为一个相当大的公司做这个,所以我真的想要一个简单的项目符号列表。

我已经阅读了这些说明 ,而且我仍然有点不清楚它们究竟是什么意思。 再说一次,如果我有更多的时间,我会购买一些垃圾领域并自己测试,但我没有时间在我身边,需要第一次做到这一点!

值得庆幸的是,目前不需要SSL。

以下是我可以收集的内容,我需要做的是将urlwww.foobaryfoobs.com指向我的应用程序,运行在warm-chamber-1882.herokuapp.com 。 请纠正我:


1)我将www.foobaryfoobs.com添加到包含该应用程序的本地存储库中。

我假设我通过导航到本地计算机上的存储库并运行:

 $ heroku domains:add www.foobaryfoobs.com 
  • 这是如何运作的? 它是否更新了我需要添加到存储库然后推送到heroku的某个配置文件?

  • 这里有任何警告或最佳做法吗? 我应该添加哪些其他域名? heroku domains:add *.foobaryfoobs.com例如heroku domains:add *.foobaryfoobs.com

  • Heroku建议我们在这里使用上面的通配符域。 为什么?


2)登录创建www.foobaryfoobs.com的注册www.foobaryfoobs.com并导航到其控制面板。

3)更新域的CNAME记录以指向warm-chamber-1882.herokuapp.com

  • 我大部分时间都在做什么? 现在我只是等待?

  • 没有IP相关的东西吗?

  • 该域名附有数十封电子邮件。 只要我不接触MX记录,我应该没事?

  • 什么是根域? 我为什么要添加它?

  • 我为什么要关心:

某些DNS主机提供了一种使用自定义记录类型在区域顶点获取类似CNAMEfunction的方法。


4)更新域的FORWARD / URL记录,以便foobaryfoobs.com指向www.foobaryfoobs.com

  • 对于一个nooby,请解释为什么这是必要的。

3个结论性问题:

1)这应该如何设置?:

该应用程序:

 warm-chamber-1882.herokuapp.com 

应该有以下配置(保存在一些奇怪的配置文件中,我不介意了解更多关于):

 domains: www.foobaryfoobs.com *.foobaryfoobs.com 

域名:

 www.foobaryfoobs.com 

应该有以下记录:

 CNAME: warm-chamber-1882.herokuapp.com URL / FORWARD: foobaryfoobs.com target: www.foobaryfoobs.com MX: *as long as I don't touch them the emails will still work* 

2)我是否受到以下保护:

确保您的DNS配置与您添加到Heroku的自定义域一致非常重要。 特别是,如果您已将* .example.com的DNS配置为指向example.herokuapp.com,请确保您还运行heroku域:add * .example.com。 否则,恶意的人可能会将baddomain.example.com添加到他们的Heroku应用程序并接收针对您的应用程序的流量。

3)我应该如何调整具有SSL后端部分的站点的步骤?

一个。

$ heroku domains:添加www.foobaryfoobs.com

这是如何运作的? 它是否更新了我需要添加到存储库然后推送到heroku的某个配置文件?

  1. 我不知道它究竟是如何在内部工作的,但是这个命令相当于在apache配置文件中添加ServerName ,没有这个请求来到www.foobaryfoobs.com它将被转发到heroku由于dns但heroku无法确定你的应用程序。 您将看到下图。 在此处输入图像描述

    这就是为什么他们需要您的域名,以便他们知道哪些应用程序属于哪些域名。 他们还需要它用于域优先目的。 只要您可以允许您的用户访问Heroku子域即warm-chamber-1882.herokuapp.com ,您的代码就不需要进行任何更改。 如果您不希望用户访问heroku子域,您必须传递301 http状态,以便将其重定向到您的实际域,即www.foobaryfoobs.com 。 为此,您可以在应用程序控制器中添加它

     before_action :forward_to_domain_if_heroku_subdomain private def forward_to_domain_if_heroku_subdomain if request.host == 'warm-chamber-1882.herokuapp.com' redirect_to "http://www.foobaryfoobs.com" , status: 301 end end 

这里有任何警告或最佳做法吗? 我应该添加哪些其他域名? heroku域名:例如添加* .foobaryfoobs.com?

  1. 如果你只想使用www.foobaryfoobs.com作为你的域,这个命令就足够了

     heroku domains:add www.foobaryfoobs.com 
  2. 如果你想分配裸域foobaryfoobs.com那么你也必须运行

     heroku domains:add foobaryfoobs.com 
  3. 如果您的应用程序使用子域名如subdomain.foobaryfoobs.com那么您还必须运行

     heroku domains:add foobaryfoobs.com 

2)登录创建www.foobaryfoobs.com的注册商并导航到其控制面板。

要珍贵,你必须做DNS管理工具。

3)更新域的CNAME记录以指向warm-chamber-1882.herokuapp.com

是。

我大部分时间都在做什么? 现在我只是等待?

是的,但也有其他的事情。

没有IP相关的东西吗?

是的,没有与ip相关的东西。

该域名附有数十封电子邮件。 只要我不接触MX记录,我应该没事?

是。

什么是根域? 我为什么要添加它?

如果您想接受来自warm-chamber-1882.herokuapp.com (而不是www. warm-chamber-1882.herokuapp.com )的用户请求,则必须添加它。

我为什么要关心:某些DNS主机提供了一种使用自定义记录类型在区域顶点获得类似CNAMEfunction的方法。

  1. 是。 他们在谈论ALIASANAME类型的记录。 (DNSimple提供)。 您必须关心它,因为从该自定义记录类型可以轻松添加记录。 它们就像预先定义的模板一样,例如ALIASA记录的模板。

4)更新域的FORWARD / URL记录,以便foobaryfoobs.com指向www.foobaryfoobs.com

对于一个nooby,请解释为什么这是必要的。

这是必要的,因为www.foobaryfoobs.comfoobaryfoobs.com的不同之处在于images.google.comnews.google有所不同。 www没什么特别的,它只是一个子域名。 如果您不这样做,用户不能使用foobaryfoobs.com的网站,但可以访问www.foobaryfoobs.com

B.

1)这是应该如何设置的?

是的,这是正确的。 但是如果你想允许foobaryfoobs.comwww.foobaryfoobs.com ,你必须做类似下表的事情。 如果您的应用不使用除www以外的任何子域,则不需要*.foobaryfoobs.com记录。 实际上添加*.foobaryfoobs.com是不好的做法。

 Type | Name | Content --------------------------------------- ALIAS | foobaryfoobs.com | yoursite.herokuapp.com CNAME | www.foobaryfoobs.com | yoursite.herokuapp.com 

确保您的DNS配置与您添加到Heroku的自定义域一致非常重要。 特别是,如果您已将* .example.com的DNS配置为指向example.herokuapp.com,请确保您还运行heroku域:add * .example.com。 否则,恶意的人可能会将baddomain.example.com添加到他们的Heroku应用程序并接收针对您的应用程序的流量。

是。 此外,你不必担心这一点。 如果恶意用户可以在您的域中设置子域,那么他就能够做很多破坏:P。 实际上,恶意用户无法访问您的DNS管理工具,因此您是安全的。

在您的注册商主机记录中,您要将@设置为重定向到www.foobaryfoobs.com,将www记录设置为warm-chamber-1882.herokuapp.com的CNAME,这是因为Heroku可能会更改与之关联的IP地址该主机名如果您在注册商中拥有IP,则还需要更新。 使用CNAME将该url绑定到ip,以便当Heroku更新ip时,您的站点仍然处于运行状态。 只要您不触摸MX记录,您的电子邮件就可以了。

为了再次保护*.foobaryfoobs.com问题,他们警告你也可以设置一个主机记录,并使其成为CNAME,并指向warm-chamber-1882.herokuapp.com

至于设置SSL,您可以查看本文 ,这应该让您进行设置。

我只能回答其中一些问题:

1)a)它更新存储在与你的应用程序相关的heroku端的一些配置。 您可以看到,如果您登录到heroku站点并查看应用程序的配置。 b)dunno c)这将让人们输入“ http://www.foobaryfoobs.com ”和“ http://foobaryfoobs.com ”,并让他们两个都去你的应用程序。

您也可以使用A / AAAA记录执行此操作..在我看来更好的方法。

在这个post中查看我的答案

Heroku EU地区如何设置自定义域名?