Document single domain gateway routing

This commit is contained in:
2026-07-09 15:56:54 +08:00
parent e661e53d0b
commit 664d1acbce

View File

@@ -0,0 +1,47 @@
# 单域名路径分流部署调整
日期2026-07-09
## 需求背景
当前用户端、管理后台和后端 API 分别通过不同端口访问:
- 用户端:`5173`
- 管理后台:`5174`
- 后端 API`8100`
部署内网穿透和域名后,这种方式不利于访问和配置。目标是使用同一个域名,通过不同路径访问不同应用:
- `https://qa.huiyushuyuan.cn/`:默认进入用户端 H5。
- `https://qa.huiyushuyuan.cn/login`:进入管理后台登录页。
- `https://qa.huiyushuyuan.cn/api/...`:访问后端 API。
## 处理决策
1. 新增 `gateway` 反向代理服务,作为 Docker 网络内唯一对外入口。
2. `gateway` 使用 Nginx 做路径分流:
- `/api/` 代理到 `backend:8100`
- `/login/` 代理到 `admin-web:5174`
- `/` 代理到 `user-client:5173`
3. `/login` 自动跳转到 `/login/`,保证后台资源路径稳定。
4. 管理后台 Vite `base` 设置为 `/login/`,避免后台资源路径和用户端资源路径冲突。
5. 用户端和管理后台的 `VITE_API_BASE_URL` 改为 `/api`,让前端在同域名下调用后端。
6. frpc 默认穿透目标改为 `gateway:80`,不再直接穿透后端 `8100`
## 风险规避
不能简单把 `/login` 反向代理到后台端口。原因是后台页面里的脚本和资源默认会请求 `/src/...``/assets/...`,如果不配置独立 base这些请求会被默认路由分到用户端导致页面加载错资源或白屏。
因此本次同时调整:
- 代理路径:`/login/`
- 后台构建 base`/login/`
- API 同源路径:`/api`
## 验收标准
- `http://127.0.0.1:8080/` 能打开用户端。
- `http://127.0.0.1:8080/login` 能进入管理后台登录页。
- `http://127.0.0.1:8080/api/health` 能访问后端健康检查。
- 用户端和管理后台通过同域 `/api` 调用后端,不再依赖 `127.0.0.1:8100`
- frpc 配置默认指向 `gateway:80`,域名穿透后可用一个域名按路径访问。