Freshbooks和Harvest等网站如何在不同的子域上创建个人平台?

时间:2014-07-11 03:53:47

标签: ruby-on-rails ruby subdomain wildcard-subdomain

我尝试创建的网站将为每个主要管理员帐户设置单独的子域。出于这个问题的目的,让我们说Google是客户,因此当他们注册时,我需要创建子域名“google.mysite.com”。

然后,具有不同权限的不同个人(管理员,员工,客户)可以登录google.mysite.com。

我正在使用Ruby on Rails作为一个平台,我对如何做到这一点感到有点迷茫。什么是坚实的方法?

2 个答案:

答案 0 :(得分:1)

这是基于约束的路由可以提供帮助的地方。通过设置路由接受任何子域,如此

get 'photos', constraints: { subdomain: /.+/ }

然后我们可以允许控制器根据request.subdomain采取行动。 Railscast有一个很好的example

我也相信设计宝石也提供类似的solution

答案 1 :(得分:0)

在运营方面,您需要设置DNS和基础架构,以便在Ruby代码之上支持此功能。

通配符子域

外卡解决方案将是最容易设置的,因为您只需要进行初始设置,任何新的子域都将排成一行。

Wildcard DNS条记录会将所有*.mysite.com映射到一条记录中。

Apache httpd和Nginx等Web服务器支持wildcard virtualhosts以及Heroku等应用程序主机,因此您可以在一个配置下容纳所有子域。

个别子域名

单个子域可以在将来为基于每个域的加载分离或自定义配置等事项提供更大的灵活性,但是每次您的一个客户注册时都需要初始设置,这可能涉及Rails应用程序之外的事情。

对于DNS记录,我会使用在其管理中提供API的DNS主机,例如Amazon Route 53Rackspace Cloud DNS

对于使用API​​配置的Ruby托管,您可能正在查看其中一个应用程序主机,例如Heroku,因为我没有看到很多"虚拟主机"使用配置API的云提供商提供的服务,除非它适用于静态文件。

内部托管

如果您想在内部托管网站,可能更容易使用支持网络和DNS配置的托管控制面板产品(如Pleskcpanel公开的API之一开箱即用,而不是自己滚动。