You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无法从Windows访问Linux Tomcat 8080端口问题求助

无法访问Linux上Tomcat?一步步排查解决

我来帮你梳理排查思路,从你给出的信息来看,有几个关键的点需要先确认:

1. Tomcat绑定地址的矛盾点是核心问题

先看你贴的server.xml配置:

<Connector port="8080" address="localhost" maxHttpHeaderSize="8192" maxPostSize="262144" maxThreads="250" minSpareThreads="25" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="60000" disableUploadTimeout="true" />

这里address="localhost"意味着Tomcat只绑定到本地回环地址(127.0.0.1),只有Linux本机才能访问,外部Windows机器根本连不上。

但你执行netstat的结果却显示:

[root@XXXX]# sudo netstat -tanpu | grep ":8080" 
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 21357/java

0.0.0.0:8080表示Tomcat绑定了所有网卡,这和配置完全矛盾,大概率是下面两种情况:

  • 你修改了server.xml没重启Tomcat,新配置没生效;
  • 你的Tomcat配置文件里还有另一个未指定address的Connector(默认配置就是不指定address,会绑定0.0.0.0)。

解决办法:

  • 打开server.xml,把address="localhost"改成address="0.0.0.0"(允许所有网卡访问),或者直接指定Linux服务器的实际IP(比如10.111.XX.XXX);
  • 保存配置后,重启Tomcat:
    # 先停止Tomcat
    $CATALINA_HOME/bin/shutdown.sh
    # 再启动Tomcat
    $CATALINA_HOME/bin/startup.sh
    
  • 重启后再跑一遍netstat命令,确认绑定地址是你设置的0.0.0.0或者指定IP。

2. 检查Linux防火墙是否拦截了8080端口

就算Tomcat绑定对了地址,Linux的防火墙也可能把8080端口的请求挡在外面。

排查操作:

  • 如果用的是firewalld,先查看防火墙状态:
    sudo firewall-cmd --state
    
  • 检查8080端口是否被放行:
    sudo firewall-cmd --list-ports | grep 8080
    
  • 要是没看到8080端口,添加规则并重启防火墙:
    sudo firewall-cmd --add-port=8080/tcp --permanent
    sudo firewall-cmd --reload
    

如果是iptables防火墙,执行以下命令:

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
sudo service iptables save
sudo service iptables restart

3. 验证Windows和Linux的基础网络连通性

先在Windows的命令提示符里ping一下Linux服务器的IP:

ping 10.111.XX.XXX

如果ping不通,说明两台机器的基础网络有问题,比如不在同一个子网、路由配置错误,或者有网络ACL限制,得先解决这个底层网络问题。

如果ping通了,再用telnet测试8080端口是否能正常连接:

telnet 10.111.XX.XXX 8080

要是telnet连接失败,说明端口确实被拦截了,回到防火墙或者Tomcat绑定配置环节再检查。

4. 查看Tomcat日志找线索

要是前面的步骤都没问题,就去查看Tomcat的日志文件找线索:

  • 访问日志路径:$CATALINA_HOME/logs/localhost_access_log.*.txt,看看有没有Windows机器的请求记录;
  • 错误日志路径:$CATALINA_HOME/logs/catalina.out,查看是否有相关报错信息。

如果日志里看不到Windows机器的请求记录,说明请求根本没到达Tomcat,继续排查网络层面的问题;如果有错误信息,根据具体报错内容再针对性解决。


内容的提问来源于stack exchange,提问作者A.S.

火山引擎 最新活动