多个Meteor应用程序,多个子域,共享数据库

时间:2014-07-10 10:34:07

标签: meteor subdomain iron-router

我正在开发一个电子学习平台,并决定将网站分成三个部分(每个部分都有自己的流星应用程序)。这三个部分是:

  • 营销网站(www.nvqhq.com)
    • 未登录时自动从其他子域重定向到此处
    • 包含所有用户注册和电子邮件/组织验证页面
    • 拥有所有面向公众的页面,例如隐私政策等
  • 管理站点(admin.nvqhq.com)
    • 仅在以admin / superadmin
    • 登录时才可访问
  • 学习者网站(learners.nvqhq.com)
    • 仅在以学员身份登录时才可访问

根据铁路由器Issue 223,没有子域路由选项,所以我不能拥有一个服务所有三个子域的公共路由文件。

此外,我认为登录会话存储在localStorage中,因此用户将无法在子域中保持登录状态。

创建此类应用程序的推荐方法是什么,或者我最好保留整个应用程序,因为我现在使用/ admin / learner。我反对这个解决方案,因为它导致代码库变得很大(有很多if hasRole 'admin'类型代码)非常快,为了保证应用程序尽可能安全,我喜欢完全订阅和发布的想法。

1 个答案:

答案 0 :(得分:3)

在meteor前面设置一个nginx代理,将子域路由到相同的位置。所以它实际上是相同的应用程序,但对用户来说它看起来不像。

该配置的http部分将如下所示:

http {
server {
   listen 80;
   server_name nvqhq.com;

   location / {
     proxy_pass http://localhost:3000/marketing;
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
     proxy_set_header Host $host;
   }
}

server {
  listen 80;
  server_name admin.nvqhq.com;

  location / {
     proxy_pass http://localhost:3000/admin;
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
     proxy_set_header Host $host;
  }
}

server {
  listen 80;
  server_name learners.nvqhq.com;

  location / {
    proxy_pass http://localhost:3000/learners;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
  }
}
}

gist

默认情况下,在此设置中,登录可能仅适用于/ marketing级别。因此,您可能必须更改meteor中为会话cookie设置的域。

但首先尝试让这个设置运行。