# 2026-06-08 502 Bad Gateway — 1panel-network 丢失恢复

## 摘要

生产 `api.synaglobal.vip` 返回 502；Layer 3 自动重启无效。根因：Nexus 容器未接入 `1panel-network`，无法解析 `1Panel-mysql-wZ3i`，entrypoint 阻塞、uvicorn 未就绪。

## 根因链

1. 近期 `docker compose up` 仅使用 `docker-compose.prod.yml`，**未叠加** `docker-compose.1panel.yml`
2. 部署脚本用 `docker network inspect 1panel-network`（无 sudo），`azureuser` 权限不足 → 误判网络不存在 → 跳过 overlay
3. 容器只在 `nexus-prod_nexus-internal`，DNS 无法解析 1Panel MySQL/Redis 容器名
4. Layer 3 `health_monitor` 反复 `docker restart`，重启后仍缺网络 → Telegram「自动重启后仍未恢复」

## 处置（已执行）

```bash
sudo docker compose -f docker/docker-compose.prod.yml -f docker/docker-compose.1panel.yml \
  --env-file docker/.env.prod --env-file docker/.host-profile up -d --no-build
```

验证：`/health` 200，`https://api.synaglobal.vip/health` 200。

## 预防

- `deploy/nexus-1panel.sh`：`has_1panel_network()` 增加 `sudo docker network inspect` 回退
- 生产部署应使用 `bash deploy/nexus-1panel.sh upgrade` 或 compose **双文件**，禁止单文件 recreate

## 涉及文件

- `deploy/nexus-1panel.sh`

## 验证

```bash
ssh nexus 'sudo docker inspect nexus-prod-nexus-1 --format "{{range \$k,\$v := .NetworkSettings.Networks}}{{\$k}} {{end}}"'
# 应含 1panel-network
curl -s https://api.synaglobal.vip/health
```
