服务器迁移导致404错误

项目场景:

用户反馈软件突然无法登陆,显示404等登陆错误


基础信息:

  • Tomcat 版本:Apache Tomcat/8.5.70
  • OS:CentOS7(Linux 3.10.0‑1160.el7.x86_64)
  • JDK:1.8.0_202

核心现象:

登录 jsp 页面 404 Not Found,不是账号密码错误,是页面资源根本访问不到。 ⚠️404 代表:Tomcat 收到请求,但是找不到对应的文件资源;不是 500(程序异常)、也不是 401/403 权限拒绝。


原因分析:

结合场景,未发布新程序,未做系统维护,仅做服务器升级迁移后出现登录页面 404

关键点 :旧环境完全正常,没有改 war 包、没有版本更新,只是迁移升级服务器,出现/xxx/xxx/common/login.jsp 404 war 包本身文件内容没有变,问题集中在迁移后的环境差异,不是程序代码本身 bug。

  1. 迁移后 webapps 目录解压不完整:war 自动解压失败,部分 jsp 文件丢失(最高概率) Tomcat 启动日志虽然打印 Deploying web application archive [/datum/tomcat/webapps/jxxsyy.war] has finished in [394] ms,但迁移后文件权限、属主问题,导致 war 解压的时候,只解压部分目录,jsp 这类小文件直接丢了。现象:webapps/jsyy 目录存在,但是子目录jsp/common/缺失或者里面没有 login.jsp,war 包本身是完整的。
  2. 文件 / 目录属主、权限不对,tomcat 进程无法读取 jsp 源文件 迁移拷贝数据的时候,文件属主变成 root,tomcat 运行用户(一般 tomcat)读不到 jsp 文件,Tomcat 表现为 404(不是 403)。CentOS7 环境迁移拷贝非常容易出现这个坑。
  3. 迁移后 tomcat 工作目录、CATALINA_BASE 环境不一致 旧环境和新迁移环境 tomcat 路径不一样,拷贝 webapps 的时候没有完整拷贝,或者只拷贝 war,没有拷贝解压后的文件夹。
  4. SELinux 开启,阻止 tomcat 读取 webapps 下面的 jsp 文件 CentOS7 升级迁移后默认 SELinux 开启,文件上下文不对,会出现能识别 war 部署,但是部分文件访问 404。

解决方案:

复制代码
# 停止tomcat
systemctl stop tomcat

# 删除残缺解压目录,保留war包!!不要删除jxxsyy.war
rm -rf /datum/tomcat/webapps/jxxsyy

# 清理tomcat缓存,迁移后缓存残留也会导致404
rm -rf /datum/tomcat/work/*
rm -rf /datum/tomcat/temp/*

# 启动tomcat
systemctl start tomcat

# 查看启动状态
systemctl status tomcat


curl -i http://127.0.0.1:8080/jxxsyy/jsp/common/login.jsp
相关推荐
梅孔立2 天前
Docker 容器网络不通:Tomcat 无法解析 MySQL、Nginx 无法反代 Tomcat 的生产级排查与治理
网络·docker·tomcat
paopaokaka_luck3 天前
灾害应急物资管理系统(AI应急助手、Echarts可视化数据看板、捐赠入库联动、 物资全流程管理、库存变动追溯、灾情资讯与互动反馈、物资发放公示)
java·前端·javascript·spring boot·mysql·tomcat·echarts
m0_743697594 天前
CentOS Stream 9 综合实验:FTP、DNS 与 Tomcat 排障
centos·tomcat·firefox
行者-全栈开发7 天前
【码动四季·秋】把 Spring Boot 的 Tomcat 换成 Undertow:一次容器替换的三处暗坑
spring boot·tomcat·容器化·依赖管理·undertow
宁波阿成8 天前
CentOS 7 环境下 Tomcat 8.5 升级至 9.0.123 操作总结
linux·centos·tomcat
行者-全栈开发9 天前
【Java中间件】CVE-2026-34486:Tomcat EncryptInterceptor 补丁绕过修复指南
tomcat·cve-2026-34486·encryptintercep·会话复制·集群安全·补丁绕过·cwe-311
景熙552310 天前
2.什么是业务后台系统
java·spring·tomcat·mybatis·jdbc
无巧不成书021810 天前
Tomcat部署JSP文件完整指南:手动部署+IDEA工程化实现 附404访问错误全排查
java·ide·windows·tomcat·intellij-idea·js
weixin_BYSJ198711 天前
电竞先锋网站---附源码02032
java·vue.js·spring boot·python·django·tomcat·php
2301_322414280412 天前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis