feat(server): 单域托管 client/dist 与 SPA 回退(E12)

- 新增 SERVE_CLIENT_DIST/CLIENT_DIST_DIR 配置
- 开启后注册 @fastify/static 并对非 /api GET(html) 回退 index.html
- docker-compose.yml 与 README 补充用法
这个提交包含在:
2026-02-09 00:06:59 +08:00
父节点 75d5b3d5de
当前提交 89c0ed2ec1
共修改 5 个文件,包含 41 行新增和 2 行删除
+15
查看文件
@@ -179,6 +179,19 @@ npm run dev
- 通过 Vite 代理将 `/api` 转发到 `http://127.0.0.1:3000`。
- Access Token 仅保存在内存,Refresh Token 通过 HttpOnly Cookie 续签。
### 4.7 单域托管 client/dist(可选,试运行建议)
```bash
cd /home/shunli/Projects/hyb-oa/client
npm run build
cd /home/shunli/Projects/hyb-oa/server
SERVE_CLIENT_DIST=true npm run dev
```
说明:
- 访问 `http://127.0.0.1:3000` 即可打开前端(同域 cookie,减少 CORS 复杂度)。
- SPA 路由(如 `/dashboard`)会回退到 `index.html`;`/api/*` 不参与回退。
---
## 5. P2 API 摘要
@@ -231,6 +244,8 @@ npm run job:ocr-once
- `JWT_SECRET`: JWT & signed-url token 签名密钥
- `APP_TIMEZONE`: 默认 `Asia/Shanghai`
- `STORAGE_DIR`: 默认 `generated/storage`(相对 `server/`)
- `SERVE_CLIENT_DIST`: 是否由 server 托管 `client/dist`(默认 `false`)
- `CLIENT_DIST_DIR`: 前端构建产物目录(默认 `../client/dist`,相对 `server/`)
- `SIGNED_URL_TTL_SECONDS`: 默认 `600`
- `MAX_UPLOAD_SIZE_BYTES`: 默认 `10485760`(10MB)
- `RATE_LIMIT_ENABLED`: 是否启用关键接口限流(默认:production=true,其它环境=false)