如何使AWS EC2上的Tomcat从本地主机外部可用
我正在尝试在AWS Linux服务器上运行Tomcat。我已经安装了Tomcat,并从命令行对其进行了测试,以确保它正常工作,但我无法从其他机器访问它。详情如下:如何使AWS EC2上的Tomcat从本地主机外部可用,tomcat,amazon-web-services,amazon-ec2,Tomcat,Amazon Web Services,Amazon Ec2,我正在尝试在AWS Linux服务器上运行Tomcat。我已经安装了Tomcat,并从命令行对其进行了测试,以确保它正常工作,但我无法从其他机器访问它。详情如下: 该实例在安全组中打开了HTTP传入端口80 我已经通过telnett到该端口上的localhost并执行GET请求,验证了它在端口80上运行 我尝试在server.xml中添加公共DNS作为localhost的别名,然后重新启动以确保所做的更改已被拾取 然而,如果我试图通过我的浏览器(实际服务器之外)使用公共DNS访问它,我会得到“无
谢谢…您打开80端口了吗 创建实例时,请为其选择一个安全组 转到左侧的安全组,clic转到实例的组,在inbound选项卡上设置:
- 创建一个新规则:HTTP
- 资料来源:0.0.0.0/0
好的,问题是我还需要编辑和重新启动iptables,正如这里所解释的:我已经尝试了文章中提到的一切,我发现我的tomcat使用的是IPv6而不是IPv4,我也修改了IPv4 编辑/etc/sysctl.conf时更改了以下配置:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
保存后,我运行“sudosysctl-p”命令重新加载sysctl。重新启动tomcat后,它将IPv6更改为IPv4。证实
(之前)
$sudo lsof-i:8080-n
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 4224 tomcat 46u IPv6 15733 0t0 TCP *:webcache (LISTEN)
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 4414 tomcat 46u IPv4 16364 0t0 TCP *:webcache (LISTEN)
(之后)$sudo lsof-i:8080-n
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 4224 tomcat 46u IPv6 15733 0t0 TCP *:webcache (LISTEN)
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 4414 tomcat 46u IPv4 16364 0t0 TCP *:webcache (LISTEN)
我希望这对面临类似问题的人有所帮助 添加上述答案中未提及的内容 对我来说,允许
TCP超过8080
是不存在的。
因此,我创建了新的入站规则,并提供了以下详细信息:
- 类型:自定义TCP规则
- 协议:TCP
- 端口范围:8080
- 资料来源:任何地方
希望它能帮助别人 你试过连接到外部IP而不是通过DNS吗?我试过了。我将它与一个弹性IP相关联,并尝试了这一点,但没有成功。好的,结果可能是我还需要编辑和重新启动iptables,如下所述:@Nickchase发布您的解决方案作为答案-它很有帮助。谢谢。完成了,谢谢你的建议,@SRakesh!不,不幸的是,不是这样(这确实需要做,但这并不是需要做的全部。不过,谢谢!如果你在windows上(我知道最初的问题是针对linux的),别忘了关闭windows防火墙。这是有效的,我在过去2小时里一直在寻找这个答案