我有一个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;
}
}