Linux Tomcat出现404错误怎么解决
导读:Linux Tomcat 出现 404 的排查与修复指南 一 快速自检 核对访问地址:确认协议、主机、端口与上下文路径。默认端口为8080,若部署为 WAR 包名myapp,常见访问为:http://服务器IP:8080/myapp/;R...
Linux Tomcat 出现 404 的排查与修复指南
一 快速自检
- 核对访问地址:确认协议、主机、端口与上下文路径。默认端口为8080,若部署为 WAR 包名myapp,常见访问为:http://服务器IP:8080/myapp/;ROOT 应用可直接用 /。注意 Linux 路径与文件名大小写敏感。
- 查看 Tomcat 是否监听端口:执行
sudo netstat -tulnp | grep :8080,确认状态为 LISTEN;若被占用,修改 conf/server.xml 中的 Connector port。 - 检查应用是否部署成功:进入 webapps,应看到目录 myapp/ 或解压后的内容;WAR 是否完整未损坏。
- 访问日志定位:查看 logs/catalina.out 与 logs/localhost.< 日期> .log,搜索 404 与对应的请求路径,获取更具体的失败原因。
二 常见根因与对应修复
- 部署与路径问题:应用未解压或放置错误、WAR 损坏、上下文路径与访问 URL 不一致。修复:将正确 WAR 放入 webapps,确保解压成功;必要时重命名 WAR 为期望的上下文名;修正访问 URL 的上下文与资源路径。
- 配置问题:server.xml 的 Host/Context 配置不当,web.xml 的 servlet-mapping/url-pattern 与请求不匹配。修复:核对 server.xml 中 appBase、unpackWARs、autoDeploy 与 Connector port;检查应用的 web.xml 或使用注解的 @WebServlet 映射是否与 URL 一致。
- 项目结构问题:缺少默认首页或静态资源不在正确目录。修复:在应用根或 WEB-INF 下放置 index.html/index.jsp;静态资源按规范存放(如 SpringBoot 的 src/main/resources/static)。
- 权限与所有权:Tomcat 运行用户无权读取应用目录。修复:
chown -R tomcat:tomcat /opt/tomcat/webapps/myapp,chmod -R 755 /opt/tomcat/webapps/myapp。 - 端口与网络:端口被占用或防火墙/安全组拦截。修复:更换 server.xml 的 8080;在 CentOS/RHEL 放行端口:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent & & sudo firewall-cmd --reload;云服务器同步开放安全组。 - 反向代理配置:使用 Nginx/Apache 时 upstream 或路径转发错误。修复:核对代理的 proxy_pass 指向 http://127.0.0.1:8080/正确上下文,以及 Location 与 proxy_set_header。
- SELinux 限制(RHEL/CentOS):可能阻止访问。修复:
sudo setsebool -P httpd_can_network_connect 1,必要时sudo chcon -Rt httpd_sys_content_t /opt/tomcat/webapps。 - SpringBoot 打成 WAR 的特殊情况:未排除内嵌 Tomcat、上下文路径配置不当、缺少 web.xml 或启动类未继承 SpringBootServletInitializer。修复:在 pom.xml 设置
< packaging> war< /packaging>并排除内嵌容器依赖;配置 server.servlet.context-path;确保启动类正确继承并覆盖 configure。
三 建议的排查顺序
- 用
ps -ef | grep tomcat确认进程存活,再用netstat -tulnp | grep :8080确认监听。 - 直接访问 http://服务器IP:8080/ 验证 Tomcat 欢迎页;若不通,先解决端口/防火墙/网络。
- 进入 webapps 检查应用目录或 WAR 是否存在且完整。
- 打开 logs/catalina.out 与 logs/localhost.< 日期> .log,定位 404 的具体请求与原因。
- 校验 server.xml 与应用的 web.xml(或注解映射)是否与访问 URL 一致。
- 检查 Linux 文件权限与所有权,确保 Tomcat 用户可读可执行。
- 若有 Nginx/Apache,逐行核对反向代理转发与路径前缀。
- 在 CentOS/RHEL 上检查 firewalld/SELinux 策略。
- 修改配置或部署后执行
bin/shutdown.sh & & bin/startup.sh重启,必要时重新部署 WAR。
四 最小可行验证示例
- 部署验证:将 ROOT.war 放入 webapps,启动后在浏览器访问 http://服务器IP:8080/,应看到 Tomcat 默认页。
- 应用验证:将 myapp.war 放入 webapps,确认生成 myapp/ 目录;访问 http://服务器IP:8080/myapp/ 与 http://服务器IP:8080/myapp/index.html(或你的业务路径)。
- 接口验证:若存在 /api/hello,确保 web.xml 或注解映射为 /api/hello,然后用 curl -v http://服务器IP:8080/myapp/api/hello 查看响应与日志。
- 代理验证(如有 Nginx):配置
proxy_pass http://127.0.0.1:8080/myapp;,用curl -H Host:your.domain http://服务器IP/测试根路径转发是否正确。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Tomcat出现404错误怎么解决
本文地址: https://pptw.com/jishu/760134.html
