在rails中动态创建子域

时间:2012-07-02 19:20:24

标签: ruby-on-rails-3 subdomain

我现在可以看到许多托管SAAS应用程序为其用户提供子域名,例如,如果应用程序(比如项目管理工具)是http://myapp.com,并且客户可以拥有像

这样的子域名 当用户注册应用程序时,可以保留

http://customer1.myapp.comhttp://customer2.myapp.com和这些URL。

我有一个转售商托管计划,我想要同样的事情,我的托管计划已设置通配符子域,从技术上讲,我可以在我的主域下创建任何子域。但我的问题是

使用ruby / rails

  • 如何让客户在他们的时间选择他们的subdoamin 注册

  • 此类要求的标准方法是什么

我打算使用rails 3.x.x

提前致谢

1 个答案:

答案 0 :(得分:0)

我最近做了类似的事情,我做的是我将服务器配置为接受任何子域,然后重定向到资源URL。在您的情况下,您可能只是将该子域请求路由到rails服务器。如果你正在使用nginx,你会有类似的东西:

server {
    listen       80;
    server_name  dev.yoursite.com *.dev.yoursite.com;
    root /path_to_your_site/public;   # <--- be sure to point to 'public'!
    passenger_enabled on;
    rails_env development;
}

然后,在您的应用中,您可以创建具有子域约束的​​路线, 类似于get '/' => 'users', :constraints => { :subdomain => /.+/ }的内容,并使用request.subdomain在控制器操作中处理该子域以查找匹配的用户。

请注意,在您的本地环境中,要么列出所有子域以进行测试,要么在服务器配置中使用lvh.me。如果您将使用自己的域而不是lvh.me,请不要忘记在您的hosts文件中添加该域和子域。另外,对于prod,请不要忘记在DNS中添加通配符子域记录。