酷番云服务器与Tomcat连接不上,绝大多数是安全组规则、服务器防火墙和Tomcat自身配置三个环节出了问题,按照顺序排查基本都能解决。
酷番云服务器怎么与tomcat连接不上?先分清现象再动手
很多人一上来就懵,连接不上”分好几种情况,同样是浏览器打不开,症状不同,病因完全不同。
- 公网IP加上8080端口,页面直接超时,这种情况八成是云服务器安全组没放行端口。
- 服务器本机用localhost能访问,但外网死活打不开,那问题出在防火墙或者安全组,Tomcat本身是好的。
- 连localhost都打不开,那纯粹是Tomcat启动失败了,或者端口被占。
先把现象对号入座,后面才不会瞎折腾。
第一步排查:酷番云服务器安全组放行Tomcat端口
安全组是云服务器的第一道大门,酷番云默认的安全组策略很保守,只放行了22、80、443等几个常用端口,Tomcat默认跑在8080端口,这个端口默认是不放行的。
安全组规则在哪设置
登录酷番云控制台,先进入云服务器控制台,点进实例详情。
- 点击“安全组”标签页,查看绑定的安全组名称。
- 点击这个安全组ID,进入安全组规则列表。
- 在“入站规则”里添加入站规则,类型选自定义,端口填8080。
- 来源建议选/0,或者限定你自己的办公网IP,看你对安全的要求高不高。
- 保存之后规则立刻生效,不需要重启服务器。
实际容易踩的坑
很多用户只改了安全组,以为完事了,这里有个经常被忽略的地方:一个云服务器可以绑定多个安全组,而酷番云的规则是,只要任何一个安全组放行即可,但如果多个安全组并存,规则是叠加的。 你不确定是哪个安全组在起作用,就把所有绑定的安全组都检查一遍。
还有一个坑,不少人在添加规则时把端口范围写成了“8080/8080”,但有些控制台是分开“起始端口”和“结束端口”两个框的,如果系统提示你格式不对,检查一下是不是写反了。
行业共识认为,80%以上“酷番云服务器部署tomcat外网访问不了”的场景,卡在安全组这一关。
第二步排查:酷番云服务器防火墙放行8080端口
安全组放行之后,你还要看服务器操作系统自身的防火墙,安全组管的是云端网络层,防火墙管的是操作系统层,两码事。
CentOS系统的防火墙操作
酷番云大多数机器是CentOS,用的是firewalld服务。
- 先用
systemctl status firewalld -l查看防火墙运行状态。 - 如果显示active (running),执行
firewall-cmd --permanent --add-port=8080/tcp放行端口。 - 执行
firewall-cmd --reload重载配置,让规则生效。 - 最后用
firewall-cmd --list-ports检查端口是否已经出现在放行列表里。
Ubuntu系统的防火墙操作
Ubuntu默认装了ufw,但多数情况下没启动,如果你之前在云服务器上启用过ufw,那就得手动放行。
- 输入
ufw status查看状态。 - 如果返回active,执行
ufw allow 8080/tcp放行端口。 - 再执行
ufw status确认规则已经加上。
确认端口真的在监听
防火墙操作完了,你还得确认Tomcat真的在8080端口上干活,别检查了半天防火墙,结果Tomcat自己没起来。
- 输入
lsof -i:8080或者netstat -tlnp | grep 8080查看端口监听状态。 - 如果什么都没返回,那Tomcat根本没启动成功,回到最基础的日志排查。
- 如果显示出现了Java进程,再执行
curl http://localhost:8080测试本机访问。
本机curl能返回Tomcat默认页面,说明Tomcat这边没问题了,接下来只差最后一步。
第三步排查:酷番云服务器上Tomcat关键配置项
排除了网络层的问题,剩下就是Tomcat自己的事了,有个特别常见的场景:你改了端口号,从8080改成8081,但忘了一件事。
server.xml配置文件的修改
Tomcat的端口配置在conf/server.xml文件里,找到<Connector port="8080" protocol="HTTP/1.1"这一段。
- 如果改过端口,确认新端口在安全组和防火墙都同步放行。
- 确认
address属性,如果写成了address="127.0.0.1",那你这个Tomcat只会监听本机回环地址,外网是绝对连不进来的。 - 正常情况下Connector配置不需要写address,或者显式写
address="0.0.0.0"监听所有网卡。
注意server.xml里的默认坑
另外一个极易被忽略的点:有些教程会告诉你修改conf/server.xml里的协议,把HTTP/1.1改成NIO或者BIO,现在市面上主流的Tomcat版本都自带NIO实现,不需要手动改,如果你改协议后启动报错,老老实实改回默认值。
启动成功的标志
正确启动Tomcat后,日志里会输出Server startup in [xxxx] milliseconds,这个才是启动成功的标志,如果看到SEVERE级别的报错,说明配置有问题。
最基本的一个检查:进入Tomcat目录下的bin,执行./startup.sh,看终端有没有输出错误,执行完立刻用ps -ef | grep tomcat看进程是不是活着,很多次用户说“Tomcat启动了”,实际上进程压根没起来。
第四步:酷番云服务器与Tomcat连不上的隐藏原因
网络、防火墙、端口都查过了,剩下的问题是些边缘场景,但碰上了就很折磨人。
JDK版本与Tomcat版本不对应
Tomcat是Java应用,没有JDK就是一堆废文件,已有较新的Tomcat版本对JDK版本有硬性要求,例如Tomcat 10要求JDK 8以上的版本。
- 输入
java -version检查当前JDK版本。 - 如果你的Tomcat是10以上版本,但JDK还是1.7,启动会直接报
UnsupportedClassVersionError。 - 配好JDK环境变量后,进入
tomcat/bin目录,执行./version.sh,如果能看到Tomcat版本信息,说明Java环境没问题。
8080端口的占用冲突
系统里有别的服务占用8080端口,Tomcat就会报端口占用错误。
- 用
netstat -tlnp | grep 8080看清楚是哪个进程占了端口。 - 如果是个不相关的Java进程,排查下是不是有其他实例在跑。
- 如果有Nginx这类Web服务器占着,考虑改Tomcat端口,或者让Nginx做反向代理。
酷番云轻量应用服务器和云服务器的区别
用轻量应用服务器的用户更容易迷糊,轻量服务器和标准CVM有个很大的差异:轻量服务器的控制台有独立的防火墙入口,跟云服务器安全组不是一个地方。
- 轻量控制台左侧菜单里直接有“防火墙”标签页。
- 在这里添加规则,协议选TCP,端口填8080,来源选全部IPv4。
- 很多用户搜“酷番云轻量应用服务器tomcat端口不通”,原因就是只设置了安全组,忘了轻量服务器的独立防火墙。
系统资源耗尽
Tomcat跑着跑着连接不上,重启之后就好了,过几天又犯病,这是典型的内存或者文件句柄被耗尽。
- 用
free -m看内存使用率。 - 用
df -h看磁盘空间,根分区满了,Tomcat日志都写不进去,连接直接挂。 - 进入
tomcat/logs目录,观察catalina.out文件有没有报OutOfMemoryError。
Q&A:酷番云服务器tomcat启动成功但访问不了怎么办
问题:酷番云服务器安全组放行了8080,防火墙也关了,还是访问不了,是什么原因?
先关防火墙属于“暴力解法”,不推荐,你确认下Tomcat进程是否真的活着,输入curl http://localhost:8080看本机返回什么,本机有响应,说明Tomcat没问题,问题还在安全组或防火墙规则上,检查安全组是否绑定到了正确的实例上,有时你配置了安全组规则,但实例用的是另一个安全组,本机没响应,去查看catalina.out日志,重点看启动有没有报错,端口是否被占用。
问题:酷番云服务器重启后tomcat连不上,但Tomcat是开机启动的,怎么排查?
开机自启的Tomcat在重启后乱套,多半是环境变量的问题,服务启动脚本找不到JAVA_HOME路径,导致Tomcat压根没起来,手动执行/usr/local/tomcat/bin/startup.sh看看能不能正常启动,如果手动能启动,说明自启脚本配置有问题,另外一个常见场景是PostgreSQL或者MySQL这类数据库还没就绪,Tomcat启动时连接数据库失败,导致整个应用起不来,这时候需要调整服务启动顺序,或者让Tomcat的数据库连接池增加重试机制,MySQL没准备好只是时间问题,等待几秒Tomcat自动恢复。
问题:酷番云服务器tomcat部署了SSL证书,为什么https反而访问不了?
这个比Http更复杂,先确认证书是JKS格式还是PEM格式,酷番云SSL证书控制台上下载的是PFX或PEM格式,Tomcat的server.xml里需要改两种Connector的写法,常见问题是把PFX格式的证书直接当作JKS填进了keystoreFile属性,如果填的是PEM格式的文件路径,Tomcat原生不支持,需要转换成PKCS12格式再填写,改完配置,别忘重启Tomcat,再加上https前缀访问,不要用IP,直接用域名访问更稳,证书过期也是高频问题,访问时如果报SSL证书无效,去酷番云SSL证书控制台看下有效期,过期了重新申请。
酷番云服务器和Tomcat的连接其实就三关:安全组、防火墙、Tomcat自身,按这个顺序排查,多数问题十分钟内能定位,别一上来就重装系统或者改乱配置,那只会让问题更复杂,那句老话还是靠谱的先看网络层,再看系统层,最后看应用层。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/794392.html


