问题排查:之前运行正常的系统,突然批量接口报 404
如果一个**之前运行正常的系统**,现在突然出现**批量接口报 404 Not Found**,优先考虑以下原因(按可能性从高到低排序):
---
### 🔴 1. **后端服务未正确部署或启动异常**
> ✅ **最常见、最高优先级排查项**
- 新版本发布后,服务未成功启动。
- 应用进程崩溃、OOM 被杀掉、启动失败(如数据库连接不上、配置错误等)。
- 容器(Docker/K8s)部署失败或副本数为 0。
- 启动了但监听的端口不是 `9910`,或者绑定到了 `localhost` 导致外部无法访问。
🔍 **如何判断:**
- 访问任意一个简单的接口(如 `/api/health` 或 `/`),是否也 404?
- 查看服务器上是否有该 Java/Node 进程在运行:
```bash
ps aux | grep java
netstat -tulnp | grep 9910
```
- 检查应用日志(logs/*.log)是否有启动失败信息。
---
### 🔴 2. **反向代理/Nginx 配置变更或失效**
> ✅ 尤其适用于通过 Nginx、Apache、网关(如 Zuul、Gateway)暴露服务的情况
- Nginx 配置被修改或重载,导致路由规则丢失。
- location 块路径匹配错误,例如:
```nginx
location /api/ {
proxy_pass http://backend/;
# 注意:这里会把 /api/ 前缀去掉,可能导致后端收不到正确路径
}
```
- 负载均衡指向了错误的服务实例(比如测试环境)。
🔍 **如何判断:**
- 直接绕过 Nginx,用内网 IP + 端口访问后端服务(如 `http://192.168.22.46:9910/api/xxx`)是否正常?
- 如果直接访问能通 → 说明问题是出在 Nginx 层。
---
### 🟡 3. **上下文路径(Context Path)发生变化**
> ✅ 常见于 Spring Boot 项目升级或配置调整
- 原来是 `/api/xxx`,但现在加了 context-path,比如:
```yaml
# application.yml
server:
servlet:
context-path: /pv-system
```
实际路径变成:`/pv-system/api/xxx`,前端仍请求旧路径 → 批量 404。
🔍 **如何判断:**
- 查看后端配置文件是否新增了 `context-path`。
- 查看启动日志中是否有类似:
```
Tomcat started on port(s): 9910 (http) with context path '/pv-system'
```
---
### 🟡 4. **API 路由前缀或版本统一调整**
- 后端将所有 API 统一迁移到 `/v2/` 或 `/service-name/` 下,但前端未同步更新。
例如:
- 原路径:`/api/initPhotovoltaicPlan`
- 新路径:`/api/pv-stage/initPhotovoltaicPlan`
🔍 **如何判断:**
- 和后端确认近期是否有“统一 API 分组”或“微服务拆分”改动。
- 查看 Swagger 文档基础路径是否变了。
---
### 🟡 5. **服务注册与发现异常(微服务架构下)**
> 如使用了 Eureka、Nacos、Consul 等
- 网关(Gateway)无法从注册中心获取可用实例列表。
- 后端服务注册失败,导致网关转发时找不到目标服务 → 返回 404。
- 网关自身路由配置未刷新。
🔍 **如何判断:**
- 登录 Nacos/Eureka 控制台,查看 `photovoltaic-early-stage` 服务是否在线。
- 检查网关日志,看是否提示 “No instance available”。
---
### 🟢 6. **前端构建/代理配置错误(可能性较低,若仅你一人有问题)**
- 若只有你本地报错,其他人正常 → 可能是你本地开发环境代理设置错误。
- `vite.config.js` 或 `vue.config.js` 中的 proxy 配置被误改。
---
### ✅ 快速诊断流程图(建议操作顺序):
```text
1. 用 curl 或 Postman 直接调用后端接口:
→ 成功? → 问题在 Nginx/网关层
→ 失败? → 进入第2步
2. 检查后端服务是否运行:
→ 进程存在?端口监听? → 进入第3步
→ 不存在? → 查日志,重启服务
3. 查看后端日志(尤其是启动日志):
→ 是否设置了 context-path?
→ 控制器是否加载?
4. 检查 Nginx / Gateway 配置是否变更
5. 联系后端确认:最近是否有发布?是否有路径重构?
```
---
### 💬 总结一句话:
> **“之前好好的,现在批量 404” —— 最大概率是后端服务没起来,或 Nginx 配置出问题,其次是 context-path 或 API 前缀变更。**
建议先 **检查服务状态和日志**,再 **绕过代理直连后端测试**,能快速定位根源。