服务器迁移导致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
相关推荐
土豆.exe1 小时前
chunked 编码的行尾:Go、h11 与 Tomcat 各错在哪一处
开发语言·网络安全·golang·tomcat
duxingzhe031120 小时前
我的一些书
java·数据库·tomcat·数据库开发·etl工程师
Mikko71 天前
Spring Boot 3.5.16 自带的 Tomcat 10.1.55 中了哪些 CVE?其中一条是修上一个漏洞时带进来的
java·spring boot·后端·安全·tomcat
captain3762 天前
Spring Web MVC入门(1)
ide·spring·java-ee·tomcat
梁云亮4 天前
在 IDEA 中运行 Tomcat 时,直接在 server.xml 中配置的 <Context> 无效
tomcat·intellij-idea·虚拟路径
高级程序源5 天前
springboot校园外卖平台13676-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·tomcat·maven·课程设计
VX_bysjlw9856 天前
数码设备销售网站设计与实现39138-计算机毕设原创(免费领源码+带部署教程)
java·vue.js·spring boot·mysql·tomcat·mybatis·idea
要开心吖ZSH10 天前
系统并发与 QPS 上限:从 200 个线程到每秒几万请求
redis·mysql·tomcat·并发·连接池·qps
王闯写bug17 天前
tomcat老版本下载tomcat8.5下载
java·tomcat