OpenShift节点REST服务错误“无法访问此站点”

时间:2017-02-01 04:18:58

标签: openshift

我有一个使用Restify在Node中编写的REST服务,该服务可以在我的主机系统上运行,并且如果我正在进入盒式磁带,则可以正常工作。但是当我尝试远程调用此服务时,无法访问该服务(在浏览器中我收到“无法访问此站点”错误)。

我实际上是在同时运行两个应用程序。一个是使用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

我能够卷曲Web应用程序并通过:

curl 52.87.189.180

我在某处读到有关HA代理是Web平衡应用程序的问题,但我现在还没有。我的应用程序是一个简单的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)

所以我的问题是,是什么阻止我从外部世界访问其他应用程序?

编辑2/1/2017:

这很有趣。我查找了端口转发并从我的主机系统尝试了这个:

rhc port-forward -a myappname

现在我可以在本地连接http://localhost:8097上的REST服务。当用localhost替换远程ip地址时,我的curl命令工作正常,我可以使用REST客户端(我使用Postman)来测试我的端点。

必须有某种防火墙规则阻止外部访问,或者它可能与我在REST应用程序本身中设置响应头的方式有关。如果是后者,我认为会有一些包含错误代码的响应,而不是等待回复的超时。

1 个答案:

答案 0 :(得分:0)

由于我没有看到任何关于如何以OpenShift方式完成此操作的响应,我想出了如何以编程方式执行此操作。在Github上查看我的solution