2

我现在可以看到很多托管的 SAAS 应用程序为他们的用户提供子域,比如如果一个应用程序(比如项目管理工具)是http://myapp.com,如果客户可以拥有像这样的子域

http://customer1.myapp.comhttp://customer2.myapp.com和这些 url 可以在用户注册应用程序时保留。

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

带红宝石/导轨

  • 如何让客户在注册时选择他们的子域

  • 像这样的要求的标准方法是什么

我打算使用 rails 3.xx

提前致谢

4

1 回答 1

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 中添加通配符子域记录。

于 2015-03-11T17:56:49.390 回答