【发布时间】:2017-02-01 04:18:57
【问题描述】:
我有一个使用 Restify 在 Node 中编写的 REST 服务,它可以在我的主机系统上运行,并且如果我通过 ssh 连接到盒式磁带中就可以工作。但是当我尝试远程调用此服务时,无法访问该服务(在浏览器上我收到“无法访问此站点”错误)。
我实际上同时运行两个应用程序。一个是使用 Express 提供动态网页的 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 网络应用程序并通过:
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)
所以我的问题是,是什么阻止我从外界访问其余应用程序?
2017 年 2 月 1 日编辑:
这很有趣。我查找了端口转发并从我的主机系统尝试了这个:
rhc port-forward -a myappname
现在我可以在本地连接到http://localhost:8097 上的 REST 服务。将 localhost 替换为远程 IP 地址时,我上面的 curl 命令有效,并且我可以使用 REST 客户端(我正在使用 Postman)来测试我的端点。
一定有某种防火墙规则阻止了外部访问,或者可能与我在 REST 应用程序本身中设置响应标头的方式有关。如果是后者,我认为会有某种包含错误代码的响应,而不是等待回复的超时。
【问题讨论】:
标签: openshift