fix(admin-frontend): 补齐独立前端容器的 api 代理

为 Caddy 增加 /api 到后端 web 服务的反向代理,
避免独立静态前端容器无法直连 Laravel API。

同时同步知识库上下文,记录 compose 分支使用
XBOARD_BACKEND_UPSTREAM=http://web:7001 的默认约定。
This commit is contained in:
yinjianm
2026-04-24 23:31:36 +08:00
parent d4168720ac
commit 2218457237
5 changed files with 22 additions and 11 deletions
+5
View File
@@ -7,6 +7,11 @@
- 方案: [202604242245_admin-frontend-node-pagination-batch-edit](archive/2026-04/202604242245_admin-frontend-node-pagination-batch-edit/)
- 决策: admin-frontend-node-pagination-batch-edit#D001(节点分页采用前端本地分页), admin-frontend-node-pagination-batch-edit#D002(批量修改范围固定为已勾选节点), admin-frontend-node-pagination-batch-edit#D003(置顶节点复用 server/manage/sort)
### 快速修改
- **[admin-frontend]**: 为独立 `xboard-admin-frontend` 容器补齐 `/api` 反向代理到后端 `web` 服务的链路,并在 compose 分支 `admin` 服务中显式声明 `XBOARD_BACKEND_UPSTREAM=http://web:7001`;同时把镜像名对齐到当前 fork `ghcr.io/micah123321/*` — by yinjianm
- 类型: 快速修改(无方案包)
- 文件: admin-frontend/Caddyfile:1-17, E:/code/php/Xboard-new-compose/compose.yaml:1-26
## [0.5.8] - 2026-04-24
### 新增
+1
View File
@@ -11,6 +11,7 @@
- 管理端前端位于 `admin-frontend/`
- `admin-frontend` 现支持通过 `ADMIN_BUILD_OUT_DIR` 覆写构建输出目录:仓内默认仍写到 `../public/assets/admin`,容器构建可切到独立 `dist`
- 前端容器化运行采用 `admin-frontend/Dockerfile``Node 20 + Caddy` 多阶段构建),静态站点入口重定向到 `/assets/admin/`
- 前端容器会通过 `XBOARD_BACKEND_UPSTREAM``/api` 反向代理到后端 `web` 服务;compose 分支当前默认值为 `http://web:7001`
- GHCR 前端镜像发布工作流位于 `.github/workflows/admin-frontend-docker-publish.yml`,镜像名为 `ghcr.io/<owner>/xboard-admin-frontend`
- 管理端 API 通过 `window.settings.secure_path``VITE_ADMIN_PATH` 解析 `/api/v2/{secure_path}` 前缀
- 登录接口复用 `/api/v2/passport/auth/login`
+1
View File
@@ -11,6 +11,7 @@
- 默认构建输出仍为主仓 `public/assets/admin`;当 `ADMIN_BUILD_OUT_DIR` 存在时,构建输出需切换到外部指定目录,供容器镜像独立打包
- 独立容器运行时通过 `Caddyfile` 把根路径重定向到 `/assets/admin/`,避免当前 `base: '/assets/admin/'` 资源前缀失效
- 独立容器运行时会把 `/api` 反向代理到 `XBOARD_BACKEND_UPSTREAM`compose 分支默认指向 `http://web:7001`,确保前端静态容器仍能直连 Laravel 后端
- 前端 GHCR 发布链路与 Laravel 主应用发布链路分离,避免把静态前端构建耦合进现有 PHP 镜像工作流
- 登录成功后优先跳转 `redirect` 指定路由,否则回到 `/dashboard`
- 受保护路由在未登录时会自动附加 `redirect` 查询参数
+10 -11
View File
@@ -1,26 +1,25 @@
# 恢复快照
## 主线目标
完成 `admin-frontend` 节点管理页的分页、单节点置顶、仅对已勾选节点生效的批量修改,以及父/子节点筛选
完成 `admin-frontend` 独立 Docker 镜像、GHCR 自动发布、compose 分支 `admin` 服务接入,以及 `admin -> web``/api` 反向代理链路
## 正在做什么
当前任务已完成,已完成代码修改、构建验证、知识库同步与方案包归档
当前任务已完成,已补齐 `xboard-admin-frontend` 到后端 `web` 服务的 `/api` 反向代理,并整理最终变更与验证证据
## 关键上下文
- 用户在确认阶段选择了“1”,确认批量修改范围仅限已勾选节点,不扩展到当前筛选结果
- 节点页已补齐本地分页、父/子节点筛选、跨分页勾选恢复、行级“置顶节点”和批量修改弹窗
- 批量修改只会更新 `host / group_ids / rate`,不会改动端口、显隐状态和协议配置
- Laravel `ManageController::batchUpdate` 已扩展支持 `host / rate / group_ids` 三个字段
- 本轮方案包已归档到 `.helloagents/archive/2026-04/202604242245_admin-frontend-node-pagination-batch-edit/`
- 用户指出此前方案遗漏了 `xboard-admin-frontend` 访问后端 API 的回源链路,需要补齐到后端 `web` 服务
- `admin-frontend/Caddyfile` 现已增加 `/api` 反向代理,回源地址由 `XBOARD_BACKEND_UPSTREAM` 控制,默认值为 `http://web:7001`
- 独立 worktree `E:\code\php\Xboard-new-compose``compose.yaml` 已补充 `admin` 服务环境变量 `XBOARD_BACKEND_UPSTREAM=http://web:7001`,并把镜像名对齐到当前 fork `ghcr.io/micah123321/*`
- 本轮已同步知识库:`.helloagents/CHANGELOG.md``.helloagents/context.md``.helloagents/modules/admin-frontend.md`
## 下一步
当前任务已完成;如继续同一业务域,可在节点管理基础上补批量显隐、批量启停、批量重置流量或后端真实分页
当前任务已完成;如继续,可下一步提交/推送 `master``compose` 两个工作树中的改动,或继续把 `ws-server`、命名卷和最终部署文档一并对齐到你的实际 compose 模板
## 阻塞项
(无)
- 本地缺少 `docker``caddy` 可执行文件,因此本轮未执行 `docker build` / `caddy validate`,仅完成了 compose YAML 语法验证与代码级自检。
## 方案
archive/2026-04/202604242245_admin-frontend-node-pagination-batch-edit
无(R1 快速修正)
## 已标记技能
frontend-design, hello-ui, hello-verify
hello-verify