Rails,Heroku和Subdomains。 我的特殊情况是否可行?
这是我的情景:
我有一个必须支持多个客户端的应用程序。 每个客户端都将获得一个服务的子域。 我们还将有一个没有该应用程序的手册网站,它只是一个关于该产品的网站以及潜在客户如何与我们建立帐户。
鉴于:
www.mycoolsite.com
将指向Heroku上的宣传册应用程序。 client1.mycoolsite.com
, client2.mycoolsite.com
和client3.mycoolsite.com
都会指向同一个SaaS应用程序,它可以告诉我们每个请求之间的区别,我应该能够处理,所以他们只看到他们的日期(即设置一个全局client_id
或类似的东西)
我该怎么做呢? 我没有用DNS做过很多,所以我对从哪里开始这个很无能为力。
谢谢。
没有汗水。 我们现在在Heroku这样做。 我们碰巧将Godaddy用于域名注册商,但任何DNS控制面板都会让您做同样的事情。
我在这里读到的其他解释有点笼统,以下是具体内容……
heroku的解释非常好,请访问: http : //docs.heroku.com/custom-domains (甚至还有一个非常好的截屏video一步一步显示)
关键是如果你的ROOT域(mycoolsite.com)在Heroku你想创建三个“A”记录,因为它们做了一些容错的交叉魔法。 所以你有一个A记录
75.101.163.44 75.101.145.87 174.129.212.2
现在为每个子域创建一个CNAME记录
www -> proxy.heroku.com client1 -> proxy.heroku.com client2 -> proxy.heroku.com client3 -> proxy.heroku.com
现在在HEROKu方面,你有两个应用程序吗? “宣传册应用程序”和saas应用程序。
登录,并为每个应用程序转到资源 – >插件 – >获取更多插件 – >自定义域(免费)
对于宣传册应用程序,添加一个域名: www.mycoolsite.com
对于saas应用程序,添加每个客户端,例如:
client1.mycoolsite.com client2.mycoolsite.com client3.mycoolsite.com
而已。 像冠军一样工作。 玩得开心。
你要做的是非常可行,而且很容易做到。
您将需要A
和CNAME
记录的组合。 简单地说, A
记录将主机名映射到IP地址, CNAME
记录充当A
记录的别名。
假设您的SaaS应用程序托管在10.0.0.1
而您的Heroku应用程序在192.168.0.1
,并且您希望www.mycoolsite.com
和mycoolsite.com
指向相同的IP。
(注意:我从未在Heroku上托管任何内容,因此配置的DNS可能略有不同)
您需要的第一件事是域名本身的A
记录。 (我在这里使用了BIND区域文件语法 – 希望您的DNS提供商有一个更简单的管理系统。)
mycoolsite.com. A 192.168.0.1 ; heroku www CNAME mycoolsite.com ; also heroku
这两条记录告诉我们mycoolsite.com
应该指向Heroku的IP地址,而www.mycoolsite.com
是mycoolsite.com
的替代名称,它也将解析为Heroku的IP地址。
现在,让我们为您的SaaS站点设置DNS。 您可以为每个子域设置A
记录,但如果您移动服务器,则需要更新许多IP地址。 最简单的选择是配置一条A
记录,然后将应用程序的子域指向它:
sassapp A 10.0.0.1 ; saas app server canonical name client1 CNAME sassapp ; alias client2 CNAME sassapp ; alias client3 CNAME sassapp ; alias
然后,您可以根据需要添加任意数量的CNAME。
我不认为这是一个问题。 在像subdomain_fu这样的gem的帮助下,Rails过去曾经支持像过去这样的子域。 在Rails 3中,子域支持实际上由Ryan Bates构建并覆盖http://railscasts.com/episodes/221-subdomains-in-rails-3 。 看看那个截屏video,了解从哪里开始。 我相信你需要Heroku http://docs.heroku.com/custom-domains的自定义域加载项。
这不会是个问题。 对于DNS,为mycoolsite.com
设置A记录,指向您想要应用程序的服务器。 设置为heroku配置的www.mycoolsite.com
的A记录。 现在,您还需要重定向mycoolsite.com
没有www的流量,并重定向到www.mycoolsite.com
,这将使您的顶级域名为您的宣传册应用程序提供服务。 一旦请求到达您的应用程序,您可以按照raidfive链接到的教程来帮助您处理应用程序内的子域。