远程Ubuntu服务器Tomcat无法通过8080端口访问问题求助
我有一台Ubuntu 22.04版本的远程服务器,已完成Tomcat 10的安装。
Tomcat运行状态
执行sudo systemctl status tomcat命令,输出如下:
root@server:/opt/tomcat/conf# sudo systemctl status tomcat ● tomcat.service - Tomcat Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2023-07-18 09:42:35 UTC; 3s ago Process: 18433 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 18440 (java) Tasks: 31 (limit: 18973) Memory: 108.9M CPU: 3.399s CGroup: /system.slice/tomcat.service └─18440 /usr/lib/jvm/java-1.17.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/l>
端口占用情况
执行netstat -nat|grep :8080和sudo lsof -i :8080命令,输出如下:
root@server:/opt/tomcat/conf# netstat -nat|grep :8080 tcp6 0 0 :::8080 :::* LISTEN root@server:/opt/tomcat/conf# sudo lsof -i :8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 18606 tomcat 42u IPv6 108428 0t0 TCP *:http-alt (LISTEN)
防火墙状态
执行sudo ufw status命令,输出显示防火墙已禁用:
root@server:/opt/tomcat/conf# sudo ufw status Status: inactive
访问测试结果
- 在浏览器输入
http://myIpAddress可正常显示内容 - 输入
http://myIpAddress:8080时无法连接
可能的原因及解决方法
1. Tomcat仅监听IPv6端口
从netstat输出可见,Tomcat只监听了IPv6的:::8080端口,未监听IPv4的0.0.0.0:8080。如果网络环境仅支持IPv4,或者服务器IPv4转发未开启,外部IPv4客户端将无法访问。
解决方法:
修改Tomcat的/opt/tomcat/conf/server.xml配置文件,找到Connector标签:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
添加address="0.0.0.0"属性,强制Tomcat监听所有IP地址:
<Connector port="8080" protocol="HTTP/1.1" address="0.0.0.0" connectionTimeout="20000" redirectPort="8443"/>
保存后重启Tomcat:
sudo systemctl restart tomcat
再次执行netstat -nat|grep :8080,确认同时出现tcp(IPv4)和tcp6(IPv6)的监听记录。
2. 云服务商安全组限制
即使服务器本地防火墙已禁用,云服务商的安全组或网络ACL可能未开放8080端口的入站规则。
解决方法:
登录云服务商控制台,找到对应服务器的安全组配置,添加一条入站规则:
- 协议:TCP
- 端口范围:8080
- 来源:0.0.0.0/0(或按需限制特定IP)
3. 本地网络端口限制
你的本地网络(如公司内网、家庭路由器)可能阻止了对8080端口的访问。
解决方法:
尝试切换到其他网络(如手机热点)访问http://myIpAddress:8080,或在服务器本地执行curl http://localhost:8080,确认Tomcat服务本身可正常响应。
内容的提问来源于stack exchange,提问作者ayada

