温馨提示×

Debian Tomcat出现404错误怎么处理

小樊
39
2026-01-11 10:54:36
栏目: 智能运维

Debian Tomcat 出现 404 的排查与修复

一 快速自检

  • 核对访问地址:确保协议、主机、端口、应用上下文路径与资源路径均正确,注意 Linux 大小写敏感、斜杠与结尾斜杠。示例:http://服务器IP:8080/应用名/
  • 确认应用已部署:在 /var/lib/tomcat9/webapps/ 下应有你的应用目录或 WAR 包,且已解压;访问 http://IP:8080/ 能看到 Tomcat 欢迎页(ROOT 应用)。
  • 检查默认首页:确认应用的 WEB-INF/web.xml 中有 ,如 index.html、index.jsp。
  • 查看服务与端口:执行 sudo systemctl status tomcat9;用 ss -ltnp | grep 8080netstat -tulpen | grep 8080 确认 8080 端口监听正常。
  • 简单验证:在应用目录(如 /var/lib/tomcat9/webapps/ROOT/)放一个 test.html,访问 http://IP:8080/test.html 验证静态资源能否访问。

二 看日志定位根因

  • 查看主日志与实时输出:
    • sudo tail -f /var/log/tomcat9/catalina.out
    • grep -i "error\|exception\|failed" /var/log/tomcat9/catalina.out
  • 查看应用日志与访问记录:
    • cat /var/log/tomcat9/localhost.<日期>.log
    • grep "你的URL" /var/log/tomcat9/localhost.<日期>.log
  • 关注日志中的关键信息:请求的 URL、应用的 context path、返回码 404、是否提示部署失败或类/资源缺失等,以判断是路径问题、映射问题还是部署问题。

三 常见原因与对应修复

  • 资源或路径不存在:文件未放在正确目录(应在应用的 webapps/应用名/ 下),或文件名/路径大小写错误。修正路径与文件名,必要时重新部署 WAR。
  • 应用未部署或部署失败:WAR 损坏、未解压或启动异常。删除残缺目录,重新部署并观察 catalina.out 启动日志。
  • Servlet 映射错误:web.xmlservletservlet-mappingurl-pattern 与访问路径不匹配。修正映射或改用注解映射。
  • welcome-file 缺失:目录访问未落到默认首页。在 web.xml 增加 <welcome-file>index.html</welcome-file> 等。
  • 上下文路径错误:访问 /app 却部署为 /ROOT 或相反。使用正确上下文路径或调整 server.xmlContext
  • 端口冲突或防火墙:端口被占用导致服务异常或访问不到。改用未占用端口,或调整防火墙放行对应端口。
  • 文件权限不足:Tomcat 运行用户对应用目录无读权限。修正权限:sudo chown -R tomcat:tomcat /var/lib/tomcat9/webapps/你的应用sudo chmod -R 755 /var/lib/tomcat9/webapps/你的应用
  • 配置语法错误:server.xml / web.xml 语法或标签闭合错误。校验并修复后重启。
  • 缓存问题:浏览器或反向代理缓存了 404 响应。清缓存、禁用代理缓存或重启 Tomcat 后再试。

四 配置与重启的正确姿势

  • 修改配置后重启:
    • sudo systemctl restart tomcat9
  • 端口调整示例(如 server.xmlConnector):
    • port="8080" 改为未占用端口(如 8081),重启后访问 http://IP:8081/
  • 自定义 404 页面(可选):在应用的 WEB-INF/web.xml 增加
    <error-page>
      <error-code>404</error-code>
      <location>/error404.html</location>
    </error-page>
    
    并在应用根目录放置 error404.html,然后重启应用。

五 仍未解决时的最小复现与求助信息

  • 最小复现步骤:
    1. /var/lib/tomcat9/webapps/test/ 创建 index.html(内容随意)。
    2. 访问 http://IP:8080/test/
    3. 若仍 404,提供:访问的完整 URL、应用目录结构(tree 或 ls)、相关 web.xml 片段、catalina.outlocalhost.<日期>.log 中对应时间段的日志、以及 ss -ltnp | grep 8080 的输出。

0