Meteor如何处理多个虚拟主机?

时间:2012-12-09 14:10:54

标签: virtual meteor hosts

Meteor如何处理多个虚拟主机?

www.Some-Client-Domain.com - > www.Our-CName-URL.com - >流星app。

我们需要Meteor应用程序提供相同的站点/应用程序,但需要特定于所请求的原始URL的数据(Some-Client-Domain.com)。

在我们当前的原型中,我们在Rails前面有NGINX,并且有几种不同的方法可以做到这一点,包括将NGINX连接到数据库以获取MANY虚拟主机的定义。这非常有用,因为如果新客户注册,我们可以更新数据库,然后NGINX立即知道该虚拟主机,而无需进一步配置NGINX。

如何在Meteor中实现这一目标?

谢谢!

1 个答案:

答案 0 :(得分:5)

好吧,如果你现在暂时忽略SSL(或者想在以后自己想出SSL),下面的指南应该有效:

基本理念

..是使用不同的数据库(mongo,通常情况)生成相同应用程序的多个实例,具体取决于基本URL。

我们将对虚拟主机使用以下设置:

  • 网站#1:www.example1.com
    • 流星港:3000
    • MongoDB端点/网址:mongodb://localhost:27017/example1
  • 网站#2:www.example2.com
    • 流星港:3001
    • MongoDB端点/网址:mongodb://localhost:27017/example2

准备meteor个实例

  1. 通过foreman安装rubygems

  2. 在meteor项目目录中创建一个foreman Procfile文件。使用上面的数据(不包括子弹:D):

    • web1: ROOT_URL=http://www.example1.com/ PORT=3000 MONGO_URL=mongodb://localhost:27017/example1 meteor
    • web2: ROOT_URL=http://www.example.com/ PORT=3001 MONGO_URL=mongodb://localhost:27017/example2 meteor
  3. - 或 - 如果您使用meteor bundle版本:

    • web1: ROOT_URL=http://www.example1.com/ PORT=3000 MONGO_URL=mongodb://localhost:27017/example1 node bundle/main.js
    • web2: ROOT_URL=http://www.example2.com/ PORT=3001 MONGO_URL=mongodb://localhost:27017/example2 node bundle/main.js
  4. 然后,您可以直接在同一目录上运行foreman start(在末尾添加&以发送到后台)。或者您可以通过foreman export将其安装为服务/新手脚本(这可能因其他Linux发行版而异,请参阅Foreman文档:http://ddollar.github.io/foreman/):

    • sudo foreman export --app meteors --user <meteor files owner> upstart /etc/init
  5. 准备nginx

    从现在开始,nginx的配置现在应该非常简单:

    server {
      listen 80;
    
      server_name www.example1.com example1.com; 
    
      location / {
        proxy_pass        http://localhost:3000;
        proxy_set_header  X-Real-IP  $remote_addr;
      }
    }
    
    
    server {
      listen 80;
    
      server_name www.example2.com example2.com; 
    
      location / {
        proxy_pass        http://localhost:3001;
        proxy_set_header  X-Real-IP  $remote_addr;
      }
    }
    

    让我知道这是否适合您,虽然您提到您已经使用过SilkJS,但我会将此留给其他对该解决方案感兴趣的人。