Nginx背后的多个流星站点

时间:2015-08-23 18:39:29

标签: nginx meteor

这个问题与this SO问题有关,但是使用Meteor.absoluteUrl()的评论中推荐的解决方案似乎并没有按预期工作。我希望能够将多个流星应用程序部署到同一服务器,并使用nginx作为每个应用程序的反向代理。

因为每个应用程序都是隔离的,所以不会从ROOT_URL访问任何应用程序,但Meteor只使用ROOT_URL来引用它来加载流星应用程序所需的资产。

我尝试在服务器的启动,客户端的启动功能以及客户端启动功能之外使用Meteor.absoluteUrl()附加到地址。它在任何这些地方都没有影响。

例如。我有nginx在/ site1监听server_name:example.com和反向代理到端口3001到我的流星应用程序。

当访问该网站时,它最初加载正常,但浏览器开发工具显示Meteor正试图在https://example.com找到javascript和css文件,当它应该从https://example.com/site1的基本网址查找时/ p>

Meteor.absoluteUrl(" site1",{ssl:true})在Meteor.startup()中设置,尝试强制将其作为正确的路径。正如您所看到的,我只是附加到ROOT_URL而没有领先/如Meteor文档中所述。

我使用meteor up部署,以及mup.json环境设置的外观:

" env":{         " ROOT_URL":" https://example.com",         " PORT":3001,         " MONGO_URL":" mongodb:// user:password @ localhost:27017 / db"     }

非常感谢任何有关此事的澄清。

2 个答案:

答案 0 :(得分:1)

使用apendua建议的子域似乎是在nginx后面的同一服务器上容纳多个Meteor应用程序的最简单方法(如果您可以使用该选项)。

  1. 为每个应用程序注册一个子域(即app1.domain.com,app2.domain.com等)
  2. 为每个子域添加nginx服务器配置,将server_name属性设置为子域地址。
  3. 为该服务器添加默认位置,并将您的proxy_pass设置为http://127.0.0.1:port,其中port是您在部署Meteor应用程序时在环境配置中设置的端口号(在我的情况下,我在我的mup.json中设置此端口号) )。

答案 1 :(得分:0)

流星应用下公共资产的根网址实际上是UnitySetAudioSessionActive(false)。您的每个应用都有一个不同的应用基本目录。假设您的整体结构如下:

/public

然后,每个应用的公开资产将位于app1/ - nginx maps to https://example1.com/ client/ lib/ public/ server/ app2/ - nginx maps to https://example2.com/ client/ lib/ public/ server/ etc... 下,该Meteor.absoluteUrl()将提供来自app/public的文件。 Meteor.absoluteUrl()+"app1"没有任何意义。