无法远程访问EC2 Red Hat Linux 9上运行的Tomcat 9.x
Tomcat远程访问故障排查方案
现状概述
- AWS EC2(Red Hat Linux)上部署Tomcat 9.x,服务已启动,本地
curl可正常访问8080端口 - 远程笔记本通过浏览器或
curl无法访问该Tomcat服务 - 已确认EC2安全组开放8080端口,尝试过Tomcat
context.xml配置IP白名单,问题未解决
已执行命令及结果
本地curl测试
[ec2-user@ip-172-31-93-84 ~]$ curl -I ec2-3-93-63-56.compute-1.amazonaws.com:8080 HTTP/1.1 200 Content-Type: text/html;charset=UTF-8 Transfer-Encoding: chunked Date: Sat, 21 Oct 2023 16:57:35 GMT
端口监听状态
netstat -lnp | grep 8080 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp6 0 0 :::8080 :::* LISTEN 3036/java
Tomcat进程信息
ps -ef | grep tomcat tomcat 3036 1 0 17:21 pts/1 00:00:09 /u01/java/latest/bin/java -Djava.util.logging.config.file=/u01/config/instance1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /u01/tomcat/latest/bin/bootstrap.jar:/u01/tomcat/latest/bin/tomcat-juli.jar -Dcatalina.base=/u01/config/instance1 -Dcatalina.home=/u01/tomcat/latest -Djava.io.tmpdir=/u01/config/instance1/temp org.apache.catalina.startup.Bootstrap start
排查方向与解决方法
- 检查子网网络ACL:AWS网络ACL是子网级防火墙,需确认子网入站规则允许
0.0.0.0/0或你的公网IP段的8080端口流量,出站规则允许对应回包流量(通常允许所有出站即可)。 - 检查本地防火墙firewalld:执行
sudo firewall-cmd --list-all查看8080端口是否开放,未开放则执行:sudo firewall-cmd --add-port=8080/tcp --permanent sudo firewall-cmd --reload - 验证Tomcat绑定地址:查看Tomcat
server.xml中的<Connector>标签,确保address属性为0.0.0.0或留空(默认监听所有地址),避免绑定到127.0.0.1或内网IP导致无法远程访问。 - 测试公网端口连通性:在本地执行
telnet ec2-3-93-63-56.compute-1.amazonaws.com 8080或nmap -p 8080 ec2-3-93-63-56.compute-1.amazonaws.com,确认端口是否可达。若无法连接,说明网络层面仍有阻断。 - 检查Tomcat Host配置:查看
server.xml的<Host>标签,确保name属性匹配EC2公域名/公网IP,或配置默认Host,避免因Host匹配失败拒绝访问。 - 确认实例公网访问能力:检查EC2实例是否分配了公网IP,路由表是否指向互联网网关,确保实例能正常访问公网,同时公网可反向访问实例公网IP。
内容的提问来源于stack exchange,提问作者Sara
相关产品推荐
相关产品推荐

