Ruby on Rails 路由:多个命名空间和多个域:最佳实践



我有一个Ruby on Rails实例,它至少支持4个不同的网站,将来还会添加更多网站。这些网站分为 3 类:

  • 管理门户(内联网)
  • 公共页面(登录页面等)
  • 应用程序的浏览器版本

我已经为这些(admin/,public/和my/)设置了命名空间,这在我的开发环境中效果很好(例如,localhost:3000/admin)。但是,在生产环境中,这些站点中的每一个都将在不同的域/子域上运行。

例如:

  • admin.domain.com 上的管理门户(管理员命名空间)
  • otherdomain.com 上的登陆页面(公共命名空间)
  • 关于 survey.otherdomain.com(公共命名空间)的调查问卷
  • my.domain.com 上的应用(我的命名空间)

不希望命名空间在 URL 中显示为 URI 段,并且在子域中也不需要它。我想将每个域路由到其相应的命名空间。

我想以这种方式拆分命名空间的主要原因是,管理员和应用程序都使用一组非常特定的资源,而这些资源不是所有其他(公共)网站都需要的,并且我希望保持开发工作流程的独立,并且这些区域之间的代码分离。

设置这种路由的最佳方法是什么?

PS:我在开发中与Webrick一起运行它,在生产中使用nginx/passsenger。我希望我不需要对nginx做任何激烈的事情来让它工作。

你所有的工作都应该在nginx配置文件中完成。

例如,对于 admin.domain.com

server {
listen       80; #or 443 if you use ssl
server_name  admin.domain.com;
root /usr/local/app/;
#ssl_certificate      app.cert; 
#ssl_certificate_key  app.key;
location  ~ ^/admin.domain.com(/.*|$) {
passenger_base_uri /;   #change this if you want a base uri
passenger_app_root  /usr/local/app/;
passenger_document_root  /usr/local/app/public;
passenger_enabled on;
}
}

最新更新