如何从不同于root的路径运行meteor(在nginx代理后面)?

时间:2013-04-30 00:47:11

标签: nginx meteor

我在端口3000上运行了一个流星应用程序

现在http://1.2.3.4:3000按预期工作。

我正在尝试将meteor应用程序公开为文档根目录之外的目录,因此在同一个框中,我在端口80上运行nginx,如下所示:

server {

  ...

  server_name my.test.com

  ...

  location /meteor{
    proxy_redirect off;
    proxy_set_header   X-Real-IP            $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   Host                   $http_host;
    proxy_set_header   X-NginX-Proxy    true;
    proxy_set_header   Connection "";
    proxy_http_version 1.1;
    proxy_pass  http://localhost:3000;
  }

  ...

}

现在当我加载http://1.2.3.4/meteor时,我得到了:

<script type="text/javascript">
__meteor_runtime_config__ = {"ROOT_URL":"meteor","serverId":"ABC12345"};
</script>

<script type="text/javascript" src="/26b7ea5a393eddd33c2278e17dc1d537732e9553.js"></script>

Noe,它试图从根路线 src =“/ 26b7e ...... 中包含js,所以它失败了。

我发现一些信息表明需要设置ROOT_URL env变量。我把它设置为“meteor”,这是我在nginx中的路由的名称,但它似乎并没有影响到它的行为。我认为该变量只会改变Meteor.absoluteUrl的工作方式。

如何告诉meteor将资源包含在哪里?我不想在根/路线上运行流星。

1 个答案:

答案 0 :(得分:1)

在Meteor 0.6.5之前似乎不支持这一点。

在v0.6.5 +

上添加了以下内容
  

ROOT_URL现在可能有一个路径部分。这允许服务多个流星   同一域名上的应用。

因此,设置ROOT_URL环境变量可以启用我正在寻找的行为。