У меня есть служба 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. Если бы это было так, я бы подумал, что будет какой-то ответ с кодом ошибки, а не таймаутом, ожидающим ответа.