在EC2上运行的Tomcat无法在AWS外部访问

时间:2018-05-23 10:21:32

标签: amazon-web-services tomcat amazon-ec2 aws-security-group elastic-ip

已经找到了很多这个问题的答案,但似乎没有任何效果。

我有一个Windows EC2实例,它已在端口8080上安装并运行tomcat 8。我部署了我的应用程序,并且能够通过连接到实例并在浏览器中启动URL来以localhost:8080/myapp的形式访问它。

但是,当我尝试通过aws外部的家庭网络访问它时,应用程序无法连接。

我知道这是因为security group设置,但我已经涵盖了这一点。即使我做了

  

安全组 - >入境 - >编辑:

     

自定义TCP规则:TCP:8080:Source Anywhere

问题仍然存在。甚至尝试使用all traffic添加规则,但仍然没有运气。

另外,要提一下,我的实例与Elastic IP相关联。一直尝试使用elastic.ip:8080/myapp访问但无法连接。

我还能尝试什么? tomcat的xml中的任何配置?

3 个答案:

答案 0 :(得分:0)

对实例进行映像并从创建的AMI中启动一个新实例。

EC2似乎在过去12小时内遇到问题,其中某些实例的公共界面无法接受流量,即使其他实例使用完全相同的启动配置启动(在我的情况下作为Auto Scaling的一部分)集团)没有问题。

如果您拥有高级技术支持,我建议您保持错误实例运行并提交带有实例ID,公共IP地址等的票证。

答案 1 :(得分:0)

我会检查“wget”是否正常工作。如果是,则表示tomcat服务器已启动并且运行

wget <hostname>:8080

此外,您家中的计算机可能还有一个防火墙,可以阻止您检索端口8080.您是否可以尝试通过主机8080端口远程登录服务器?

最后检查服务器上的IPtables: -

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

答案 2 :(得分:0)

确保tomcat不只是在127.0.0.1:8080上收听。这将使它可用于localhost但不能在其他地方使用。在server.xml中查找连接器地址,并确保将其设置为0.0.0.0以侦听所有接口:

# Example
<Connector port="8080" protocol="HTTP/1.1" 
           address="0.0.0.0" />

您还可以查看netstat -an | grep :8080的输出,您应该看到类似

的行
tcp        0      0 0.0.0.0:8080              0.0.0.0:*               LISTEN

相反,如果你看到

tcp        0      0 127.0.0.1:8080              0.0.0.0:*               LISTEN

您知道它只能在127.0.0.1上收听,但这些内容无法在您当地主机之外播放。