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

时间:2014-03-14 09:19:02

标签: ruby-on-rails heroku

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

我读过these instructions,我仍然有点不清楚它们究竟是什么意思。再说一次,如果我有更多时间购买一些垃圾领域并自己测试,但我没有时间陪伴我,需要第一次做到这一点!

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

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


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

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

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

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

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


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

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

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

  • 是否没有与IP相关的内容?

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

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

  • 我为什么要关心:

  

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


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

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

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的自定义域名。特别是,如果你有   将您的DNS配置为* .example.com指向   example.herokuapp.com,请确保您还运行heroku域:添加   * .example.com的。否则,恶意的人可能会将baddomain.example.com添加到他们的Heroku应用程序并接收预期的流量   为您的申请。

3)如何调整具有SSL后端部分的网站的步骤?

4 个答案:

答案 0 :(得分:5)

  

$ heroku domains:添加www.foobaryfoobs.com

     

这是如何工作的?它是否更新了某些配置文件,我需要将其添加到存储库然后再推送到heroku?

  1. 我不确切知道它是如何在内部工作的,但是这个命令相当于在apache配置文件中添加ServerName,当请求到达www.foobaryfoobs.com时它将被转发到heroku因为dns,但heroku无法确定您的应用。您将看到下图。 enter image description here

    这就是为什么他们需要您的域名,以便他们知道哪些应用属于哪些域名。他们还需要它用于域优先目的。只要您可以允许您的用户访问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
    
  2.   

    这里有什么警告或最佳做法吗?我应该添加哪些其他域名? 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
      
    4.   

      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主机提供了一种使用自定义记录类型在区域顶点获取类似CNAME功能的方法。

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

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

             

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

        这是必要的,因为www.foobaryfoobs.comfoobaryfoobs.comimages.google.comnews.google方面有所不同。 www并不特别,它只是一个子域名。如果您不这样做,则用户无法使用foobaryfoobs.com中的您的网站,但可以访问www.foobaryfoobs.com

          

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

        是的,这是正确的。但是,如果您想允许foobaryfoobs.comwww.foobaryfoobs.com,则必须执行下表中的操作。如果您的应用不使用*.foobaryfoobs.com以外的任何子域,则不需要www记录。实际上添加*.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管理工具,因此您可以安全无虞。

答案 1 :(得分:3)

在您的注册商主机记录中,您要将@设置为重定向到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而言,您可以查看this article,这可以让您进行设置。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

在这个帖子中查看我的答案

Heroku EU region how to setup custom domain name?