2017-02-01 2 views
0

У меня есть служба REST, написанная в узле, используя Restify, которая работает на моей хост-системе, и работает, если я схожу в картридж. Но когда я пытаюсь вызвать эту услугу удаленно, услуга не может быть достигнута (в браузере я получаю ошибку «Этот сайт не может быть найден»).Ошибка службы REST службы OpenShift «Этот сайт не может быть достигнут»

Я на самом деле одновременно запускаю два приложения. Одним из них является экспресс-приложение, которое обслуживает динамические веб-страницы с помощью Express, и вызывает службу REST, которая работает на другом порту.

Веб-страница отлично работает, за исключением случаев, когда она пытается получить доступ к службе REST. Он использует сконфигурированный порт OPENSHIFT_NODEJS_IP. Служба REST использует порт, который я указал: 8097.

Для простого теста я создал конечную точку отдыха, которая отвечает простым статусом. В то время как в SSH сессии на картридже, я могу напечатать это и увидеть этот результат:

curl http://${NODE_IP}:8097/status 
"{status: 'ok'}" 

Но на моей системе хозяина, я не могу свернуться этот адрес, используя адрес IP публики, назначенный для картриджа:

curl 52.87.189.180:8097/status 
curl: (7) Failed to connect to 52.87.189.180 port 8097: Operation timed out 

Я могу свернуться веб-приложение и получить через:

curl 52.87.189.180 

Я где-то читал о HA Proxy является проблемой для веб-приложений, уравновешенный, но у меня нет, что прямо сейчас. Мое приложение - простой картридж NodeJS вместе с MongoDB. Сервер REST работает правильно локально, включен для CORS и использует переменные среды OpenShift для настройки подключения. Вот порты:

lsof -l 
COMMAND PID  USER FD TYPE DEVICE  SIZE/OFF NODE NAME 
mongod 22936  3389 11u IPv4 518405103 0t0  TCP 127.6.158.130:27017 (LISTEN) 
node 23028  3389 11u IPv4 518408054 0t0  TCP 127.6.158.129:8097 (LISTEN) 
node 23028  3389 12u IPv4 518408056 0t0  TCP 127.6.158.129:8080 (LISTEN) 

Так что мой вопрос, что может быть мешает мне доступ к приложению отдыха от внешнего мира?

Edit 2/1/2017:

Это интересно. Я посмотрел перенаправление портов и попытался это из моей системы хозяина:

rhc port-forward -a myappname 

Сейчас я нахожусь в состоянии локально подключиться к моей службе REST на http://localhost:8097. Мои команды curl выше работают при замене localhost на удаленный IP-адрес, и я могу использовать клиент REST (я использую Postman) для проверки своих конечных точек.

Должно существовать какое-то правило брандмауэра, блокирующее внешний доступ, или, возможно, его отношение к тому, как я настроил заголовки ответов в самом приложении REST. Если бы это было так, я бы подумал, что будет какой-то ответ с кодом ошибки, а не таймаутом, ожидающим ответа.

ответ

0

Поскольку я не вижу ответов, как это можно сделать с помощью метода OpenShift, я понял, как это сделать программно. Смотрите мой solution на Github.

Смежные вопросы