0

我在 EC2 中设置了 2 个实例。一个是运行 nginx 并与弹性 IP 地址相关联,因此可以公开访问。

另一个没有 Web 服务器,但有一个在 8080 端口上运行的 RESTful 服务器。

两者都属于具有以下规则的安全组:

Ports   Protocol    Source  MongoDB-2-2-2-AutogenByAWSMP-
22  tcp 0.0.0.0/0   
80  tcp 0.0.0.0/0   
8080    tcp 0.0.0.0/0

如果我理解正确,那么端口 8080 应该是开放的。

如果我通过 ssh 连接到我的网络盒(运行 nginx),我正在尝试在另一个实例:8080 上测试对我的 RESTful 服务器的访问,所以我尝试了:

curl http://10.151.87.76:8080/1/tlc/ping
curl http://ip-10-151-87-76:8080/1/tlc/ping
curl http://ip-10-151-87-76.ec2.internal:8080/1/tlc/ping

所有这些都给了我“无法连接到主机”的错误。

如果我直接登录 RESTful 框并执行以下操作,它就可以工作。

curl localhost:8080/1/tlc/ping

所以我知道我的服务是正常的。

任何我为什么看不到其他实例的端口 8080 的想法都值得赞赏。

4

2 回答 2

1

确保实例位于同一可用区。如果没有,您可能需要通过公共 DNS 名称(例如 ec2-XXX-XX-XXX-XXX.YYY.amazonaws.com)访问实例。

确保 10.151.87.76 是正确的 IP。请注意,这可能会在实例停止并重新启动后发生变化。

确保你的无头服务是公开可用的——它可能只在 localhost:8080 上侦听,但应该在 0.0.0.0:8080 上侦听。从其他实例尝试nmap 10.151.87.76 -p 8080,它应该将 8080 列为开放端口。

于 2013-04-16T23:00:08.703 回答
0

确保您的无头服务是公开可用的 << 所以这就是原因。您为 REST API 使用的 Web 服务器是什么?如果是 Apache,请确保配置显示 Listen 8080,而不是 Listen 1.2.3.4:8080。如果它是独立应用程序,请确保它可以侦听所有接口——默认情况下,某些客户端将侦听 localhost。– hudolejev 54 分钟前

这个!在我的代码中深埋(深)是连接到“localhost”的服务器的一部分。将其更改为关闭主机名,一切都很好!快乐的。

于 2013-04-17T00:13:56.500 回答