Метеор. Какова цель "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
Ответы
Ответ 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 достаточно хорошо, чтобы сказать, имеет ли значение эта часть.