Подтвердить что ты не робот

Метеор. Какова цель "ROOT_URL" и для чего она должна быть определена?

У меня возникают некоторые проблемы, чтобы сделать многообещающую работу с PhantomJS на моем сервере Ubuntu. Я видел это устранение неполадок Meteorpedia:

Убедитесь, что ROOT_URL, на котором настроен ваш сервер Meteor, используется доступен с самого сервера. (Так как v0.8.1.3 [1])

Я думаю, что это может быть возможным ответом на то, почему он не работает. Какова цель этой переменной среды?

Мое приложение открыто доступно на http://gentlenode.com/, но мой proxy_pass на nginx установлен на 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

4b9b3361

Ответ 1

В переменной среды ROOT_URL должен быть указан URL-адрес, к которому клиенты будут обращаться к вашему приложению. Таким образом, в вашем случае это будет http://gentlenode.com или https://gentlenode.com.

Переменная среды ROOT_URL читается Meteor.absoluteUrl, которая используется во многих (основных) пакетах. Таким образом, установка ROOT_URL может быть требованием, если вы используете эти пакеты. spiderable является одним из таких пакетов.

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

Ответ 2

Я признаю, что мы не используем spiderable, поэтому я не уверен на 100%, если это исправит вашу проблему, но вот что мы делаем...

Мы устанавливаем ROOT_URL URL, который клиенты будут использовать для первоначального подключения. В вашем случае конфигурация nginx автоматически обновляет все HTTP-запросы до HTTPS, поэтому все запросы будут видны вашим приложением под https://gentlenode.com. Я думаю, вы должны начать свой сервер после:

export ROOT_URL=https://gentlenode.com

Ваш раздел proxy_pass может быть правильным. Мы вручную укажем имя локального порта. Поэтому мы пишем:

proxy_pass http://localhost:58080;

Если у вас есть что-то, что работает уже, это может быть необязательно. Я не знаю всех причуд nginx достаточно хорошо, чтобы сказать, имеет ли значение эта часть.