【问题标题】:How can Meteor handle multiple Virtual Hosts?Meteor 如何处理多个虚拟主机?
【发布时间】:2012-11-27 02:39:12
【问题描述】:

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

www.Some-Client-Domain.com --> www.Our-CName-URL.com --> Meteor 应用程序。

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

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

这将如何在 Meteor 中实现?

谢谢!

【问题讨论】:

标签: virtual meteor hosts


【解决方案1】:

好吧,如果您现在只是忽略 SSL(或者想稍后自己弄清楚 SSL),那么下面的指南应该可以工作:

基本思路

.. 是根据基本 URL 生成具有不同数据库(mongo,通常情况下)的同一应用程序的多个实例。

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

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

准备meteor 实例

  1. 通过rubygems安装foreman

  2. 在您的流星项目目录中创建一个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

准备 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,但我将把它留在这里,供任何对解决方案感兴趣的人使用。

【讨论】:

  • 嘿,小注意,example2.com 的 nginx 代理应该是 3001
猜你喜欢
  • 2016-09-09
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 2018-04-05
  • 2012-10-24
  • 2013-05-22
  • 1970-01-01
相关资源
最近更新 更多