学习笔记,会随着学习继续修改,难免有不完整的地方。
后端 502:重启后进程丢失 + 代理拦截 localhost
卡在哪
前端首页能打开,但访问 /api/health 和登录都报 502 Bad Gateway。

我怎么定位的
-
搞清 502 是谁报的
- 502 是「中间人」报的:Vite(7301)把
/api转发给后端(7302),没拿到有效回应 - 对比:500 才是后端自己代码出错
- → 问题在 Vite 到后端这一段,后端可能根本没收到请求
- 502 是「中间人」报的:Vite(7301)把
-
看中间人的日志
- Vite 终端里是
ECONNREFUSED:7302 端口上没有程序在监听

- Vite 终端里是
-
找后端为什么没在跑
- 电脑重启过,终端里手动启动的 API、Worker、前端全部随之结束;Docker Desktop 也没启动
- → 第一层根因:进程丢失
-
重新启动 API,又失败了
- 启动时创建 bucket,报
CreateBucket ... 502 Bad Gateway,Application startup failed

- 绕过中间环节直连
localhost:7313/health返回 200 → RustFS 本身没问题 - 容器就绪后用后端代码重跑建 bucket,仍是 502 → 不是启动顺序问题
- 又是 502,说明后端和 RustFS 之间也有个「中间人」
- 启动时创建 bucket,报
-
找到这个中间人
scutil --proxy:系统代理开着(127.0.0.1:7892),例外列表里有localhost- boto3 会读到系统代理,但不读例外列表,只认
NO_PROXY环境变量 - 对照实验:不设
NO_PROXY→ 502;设NO_PROXY=localhost,127.0.0.1→ 成功
根因 & 修复
根因 两层叠加:① 重启电脑后,手动启动的进程全部丢失;② 重启 API 时,boto3 把访问
localhost的请求送进了系统代理,代理返回 502。
修复:
| 问题 | 修复 |
|---|---|
| 进程丢失 | 按 本地启动与重启 重新拉起 Docker、API、Worker、前端 |
| 代理拦截 localhost | ~/.zshrc 末尾加 export NO_PROXY="localhost,127.0.0.1,::1",新开终端生效(原文件备份在 ~/.zshrc.bak-20261015) |

下次我会先做什么
> 一共三个层级:前端 → 后端 → 组件层,一层一层地去排查。 (命令见 故障排查:从上往下查三层;10-15 停掉 API 亲手演练过一遍后写下)