如何在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的某个配置文件?
-
我不知道它究竟是如何在内部工作的,但是这个命令相当于在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?
-
如果你只想使用
www.foobaryfoobs.com
作为你的域,这个命令就足够了heroku domains:add www.foobaryfoobs.com
-
如果你想分配裸域
foobaryfoobs.com
那么你也必须运行heroku domains:add foobaryfoobs.com
-
如果您的应用程序使用子域名如
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的方法。
- 是。 他们在谈论
ALIAS
或ANAME
类型的记录。 (DNSimple提供)。 您必须关心它,因为从该自定义记录类型可以轻松添加记录。 它们就像预先定义的模板一样,例如ALIAS
是A
记录的模板。
4)更新域的FORWARD / URL记录,以便foobaryfoobs.com指向www.foobaryfoobs.com
对于一个nooby,请解释为什么这是必要的。
这是必要的,因为www.foobaryfoobs.com
和foobaryfoobs.com
的不同之处在于images.google.com
和news.google
有所不同。 www
没什么特别的,它只是一个子域名。 如果您不这样做,用户不能使用foobaryfoobs.com
的网站,但可以访问www.foobaryfoobs.com
。
B.
1)这是应该如何设置的?
是的,这是正确的。 但是如果你想允许foobaryfoobs.com
和www.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地区如何设置自定义域名?