正面结束AWS EC2上的应用服务器

时间:2013-04-16 22:53:00

标签: amazon-web-services amazon-ec2

我在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的任何想法都表示赞赏。

2 个答案:

答案 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”的服务器的一部分。改变它来关键主机名,一切都很好!高兴。