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

Eri*_*ric 4 virtual hosts meteor

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

www.Some-Client-Domain.com - > www.Our-CName-URL.com - > Meteor app.

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

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

如何在Meteor中完成?

谢谢!

Set*_*aki 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. foreman Procfile在meteor项目目录中创建一个文件.使用上面的数据(不包括子弹: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直接在同一目录上运行(&在末尾添加一个发送到后台).或者您可以将其安装为服务/ upstart脚本foreman export(这可能因其他Linux发行版而异,请参阅Foreman文档:http://ddollar.github.io/foreman/):

    • sudo foreman export --app meteors --user <meteor files owner> upstart /etc/init

准备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;
  }
}
Run Code Online (Sandbox Code Playgroud)

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