我在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)我试图在另一个实例上测试对我的RESTful服务器的访问:8080,所以我试过了:
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的任何想法都表示赞赏。
答案 0 :(得分: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列为开放端口。
答案 1 :(得分:0)
确保您的无头服务是公开的<<所以这就是原因。您使用什么Web服务器进行REST API?如果是Apache,请确保配置为Listen 8080,而不是Listen 1.2.3.4:8080。如果它是独立应用程序,请确保它可以侦听所有接口 - 默认情况下,某些客户端将侦听localhost。 - hudolejev 54分钟前
此!在我的代码中深埋(深)是连接到“localhost”的服务器的一部分。改变它来关键主机名,一切都很好!高兴。