【问题标题】:Meteor - What is the purpose of "ROOT_URL" and to what should it be defined?Meteor - “ROOT_URL”的目的是什么,应该定义什么?
【发布时间】:2015-01-03 15:02:02
【问题描述】:

在我的 Ubuntu 服务器上使用 PhantomJS 进行可爬取工作时遇到了一些问题。我在Meteorpedia 看到了这个故障排除:

确保您的 Meteor 服务器配置为使用的 ROOT_URL 可以从服务器本身访问。 (自 v0.8.1.3[1] 起)

我认为这可能是为什么它不起作用的一个可能答案。这个环境变量的具体用途是什么?

我的应用程序可以在 http://gentlenode.com/ 上公开访问,但我在 nginx 上的 proxy_pass 设置为 http://gentlenode/

# HTTPS Server
server {
    listen 443;
    server_name gentlenode.com;
    # ...

    location / {
        proxy_pass http://gentlenode/;
        proxy_http_version 1.1;
        # ...
    }
}

我应该将ROOT_URL 设置为http://gentlenode.com/http://gentlenode/ 还是http://localhost/

你可以在这里找到我的 nginx 配置:https://gist.github.com/LeCoupa/9877434

【问题讨论】:

  • meteor实例和nginx在同一台服务器上吗?换句话说,您是在代理本地主机吗?
  • 是的,meteor 实例在同一台服务器上运行。我想我正在代理到本地主机,这是我的 nginx 文件,可以确定:gist.github.com/LeCoupa/9877434#file-meteor-ssl-nginx

标签: nginx meteor


【解决方案1】:

ROOT_URL 环境变量应设置为客户端访问您的应用程序时使用的 URL。因此,在您的情况下,它将是 http://gentlenode.comhttps://gentlenode.com

ROOT_URL 环境变量由Meteor.absoluteUrl 读取,在许多(核心)包中使用。因此,如果您使用这些软件包,可能需要设置ROOT_URLspiderable 就是这样一个包。

// Line 62 of spiderable_server.js
var url = Spiderable._urlForPhantom(Meteor.absoluteUrl(), req.url);

【讨论】:

    【解决方案2】:

    我承认我们不使用可爬虫,所以我不能 100% 确定这是否能解决您的问题,但我们正在这样做......

    我们将 ROOT_URL 设置为客户端将用于初始连接的 URL。在您的情况下,nginx 配置会自动将所有 HTTP 请求升级为 HTTPS,因此您的应用程序将在 https://gentlenode.com 下看到所有请求。我认为您应该在以下时间启动服务器:

    export ROOT_URL=https://gentlenode.com
    

    您的proxy_pass 部分可能是正确的。我们手动拼出本地端口的名称。所以我们会写:

    proxy_pass http://localhost:58080;
    

    如果您有一些已经可以使用的东西,则可能没有必要。我不太了解 nginx 的所有怪癖,无法说出那部分是否重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 2015-09-15
      • 2011-02-12
      • 2021-08-05
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      • 2019-08-31
      相关资源
      最近更新 更多