部署:Admin 首页被 go-admin 欢迎页顶替——根路径兼容 SPA,并补全 nginx 配置与按内容验收文档 #346

Closed
opened 2026-09-28 16:02:38 +08:00 by ila · 2 comments
Owner

来源与原始需求摘要

  • 来源:2026-09-28 线上迁移到 122.228.200.167 后,访问 http://122.228.200.167:9527/ 显示 go-admin 默认欢迎页而非 Admin 后台;已在线上热修(nginx 配置恢复为旧服务器写法)。
  • 用户原话:「为什么总是会出现这个问题,要不要这个流程规则更新到文档呢」→ 选择「做1和2」(1 更新文档;2 代码根治)。

根因

  1. 服务端 server/app/admin/router/sys_router.go 注册 r.GET("/", apis.GoAdmin)(go-admin 欢迎页);前端 SPA 仅通过 InitSPARouter 的 NoRoute 兜底提供,/ 永远命中欢迎页。
  2. 线上依赖 nginx 在 9527 直接提供 /home/goauto/current/dist、location = / 返回 index.html,其余 try_files $uri @goauto_backend;该配置只存在于旧服务器文件,docs/13-deployment-and-operations.md 仅一句「Nginx 同时承载 Admin 静态资源并反向代理 GoAuto API」,无配置全文。迁移时新配置写成全部 proxy_pass,首页即变欢迎页。
  3. 发布验收只检查「首页 HTTP 200」,欢迎页同样 200,检查无法发现(与 #281 dist 缺失同类)。
  4. 部署文档仍写旧服务器 185.216.248.75。

目标

  1. 文档(Wiki-first):更新 Deployment-and-Operations 页:当前线上拓扑(122.228.200.167)、nginx 9527 标准配置全文与原因、发布/迁移后按内容的验收检查(首页含 id="app" 且不含「GO-ADMIN欢迎您」、SPA 路由、静态资源、验证码 JSON、业务接口未登录 401 JSON)、迁移清单(nginx、dist、goauto.env、systemd、数据库、定时任务)、本次迁移与热修记录。
  2. 代码根治:当 GOAUTO_WEB_DIST(或默认 dist)下存在 index.html 时,GET / 返回 SPA index.html;否则保留 go-admin 欢迎页(开发环境行为不变)。补测试。

非目标

  • 不改 nginx 以外的线上配置;不部署本单代码(部署另行授权)。
  • 不改 SPA 其他路由规则。

验收

  1. Wiki 页面更新并在线回读取得 revision,harness.py sync 与 sync --check 通过,镜像提交。
  2. 有 dist 时 GET / 返回 index.html;无 dist 时仍为欢迎页;API 路径行为不变——测试覆盖;go build/go vet/相关测试通过。
  3. 合并 main 使用 --no-ff 合并提交。

风险

  • 低:仅根路径在存在 dist 时的返回变化;开发环境(无 dist)不变。

设计证据

  • 无 UI 变化。

文档影响

  • 更新 Deployment-and-Operations(docs/13-deployment-and-operations.md 镜像)。
## 来源与原始需求摘要 - 来源:2026-09-28 线上迁移到 122.228.200.167 后,访问 `http://122.228.200.167:9527/` 显示 go-admin 默认欢迎页而非 Admin 后台;已在线上热修(nginx 配置恢复为旧服务器写法)。 - 用户原话:「为什么总是会出现这个问题,要不要这个流程规则更新到文档呢」→ 选择「做1和2」(1 更新文档;2 代码根治)。 ## 根因 1. 服务端 `server/app/admin/router/sys_router.go` 注册 `r.GET("/", apis.GoAdmin)`(go-admin 欢迎页);前端 SPA 仅通过 `InitSPARouter` 的 NoRoute 兜底提供,`/` 永远命中欢迎页。 2. 线上依赖 nginx 在 9527 直接提供 `/home/goauto/current/dist`、`location = /` 返回 index.html,其余 `try_files $uri @goauto_backend`;该配置只存在于旧服务器文件,`docs/13-deployment-and-operations.md` 仅一句「Nginx 同时承载 Admin 静态资源并反向代理 GoAuto API」,无配置全文。迁移时新配置写成全部 `proxy_pass`,首页即变欢迎页。 3. 发布验收只检查「首页 HTTP 200」,欢迎页同样 200,检查无法发现(与 #281 dist 缺失同类)。 4. 部署文档仍写旧服务器 185.216.248.75。 ## 目标 1. **文档(Wiki-first)**:更新 Deployment-and-Operations 页:当前线上拓扑(122.228.200.167)、nginx 9527 标准配置全文与原因、发布/迁移后**按内容**的验收检查(首页含 `id="app"` 且不含「GO-ADMIN欢迎您」、SPA 路由、静态资源、验证码 JSON、业务接口未登录 401 JSON)、迁移清单(nginx、dist、goauto.env、systemd、数据库、定时任务)、本次迁移与热修记录。 2. **代码根治**:当 `GOAUTO_WEB_DIST`(或默认 `dist`)下存在 `index.html` 时,`GET /` 返回 SPA index.html;否则保留 go-admin 欢迎页(开发环境行为不变)。补测试。 ## 非目标 - 不改 nginx 以外的线上配置;不部署本单代码(部署另行授权)。 - 不改 SPA 其他路由规则。 ## 验收 1. Wiki 页面更新并在线回读取得 revision,`harness.py sync` 与 `sync --check` 通过,镜像提交。 2. 有 dist 时 `GET /` 返回 index.html;无 dist 时仍为欢迎页;API 路径行为不变——测试覆盖;`go build`/`go vet`/相关测试通过。 3. 合并 main 使用 `--no-ff` 合并提交。 ## 风险 - 低:仅根路径在存在 dist 时的返回变化;开发环境(无 dist)不变。 ## 设计证据 - 无 UI 变化。 ## 文档影响 - 更新 `Deployment-and-Operations`(docs/13-deployment-and-operations.md 镜像)。
Author
Owner

实施回写(2026-09-28)

线上热修(已完成):122.228.200.167 的 /www/server/panel/vhost/nginx/goauto-9527.conf 恢复为旧机写法(root 指向 dist、location = / 返回 index.html、其余 try_files $uri @goauto_backend),保留 default_server/server_name/allow all;备份 goauto-9527.conf.bak-20260928150822;nginx -t 通过后 reload。外网按内容验收:/ 与 /login、/goauto/syb-products 返回 Admin index.html(含 id="app"),/js/… 200,/api/v1/captcha JSON code=200,/api/admin/v1/yeeke-returns 未登录 JSON 401。

分支:fix/346-root-serves-spa(基于 main 9dace6a),已推送,未合并。

代码根治 0b01b92

  • spa.go 抽出 spaIndex() 与 registerRootRoute();sys_router.go 改为调用 registerRootRoute。存在 dist/index.html 时 GET / 返回 SPA;无 dist 时保持原行为(非 prod 欢迎页、prod 不注册)。
  • 测试:TestRootServesSPAWhenDistExists(dev/test/prod 三种模式)、TestRootWithoutDistKeepsPreviousBehaviour;app/admin/router 全部测试通过;go build ./...、go vet 通过;改动文件 gofmt 干净。

文档(Wiki-first)c13dcd3

  • Wiki Deployment-and-Operations 由 9c10d971 更新为 3a76e16d,在线回读内容一致;harness.py sync 与 sync --check 通过;只提交 docs/13-deployment-and-operations.md 镜像。
  • 新增/修改:当前线上拓扑(122.228.200.167)、「Nginx 入口(9527)」标准配置全文及原因、「发布与验证」第 3 步改为按内容验收、「服务器迁移清单」8 项、2026-09-28 迁移与首页修复记录。

发现的问题(未处理,需决定)

  • sync 时线上 Wiki 的 Architecture-and-Code-Map、Business-Rules-and-Glossary、SYB-ERP-Interface-Contract 三页缺少 #343 的内容,而 main 的镜像已含 #343 描述(疑为直接改镜像未先改 Wiki,或 Wiki 被覆盖)。若按 Wiki 同步会把 #343 文档改回旧内容,因此本单未提交这三页镜像。需要把 #343 的内容补回线上 Wiki 后再同步。
  • Deployment-and-Operations 页正文开头混入两段旧镜像头(历史同步遗留),本单未改动。

未做

  • 未部署本单代码(线上已靠 nginx 修复恢复;部署另行授权)。

状态:待验收。

## 实施回写(2026-09-28) **线上热修(已完成)**:122.228.200.167 的 `/www/server/panel/vhost/nginx/goauto-9527.conf` 恢复为旧机写法(root 指向 dist、`location = /` 返回 index.html、其余 `try_files $uri @goauto_backend`),保留 `default_server`/`server_name`/`allow all`;备份 `goauto-9527.conf.bak-20260928150822`;`nginx -t` 通过后 reload。外网按内容验收:`/` 与 `/login`、`/goauto/syb-products` 返回 Admin index.html(含 `id="app"`),`/js/…` 200,`/api/v1/captcha` JSON code=200,`/api/admin/v1/yeeke-returns` 未登录 JSON 401。 **分支**:`fix/346-root-serves-spa`(基于 main `9dace6a`),已推送,**未合并**。 ### 代码根治 `0b01b92` - `spa.go` 抽出 `spaIndex()` 与 `registerRootRoute()`;`sys_router.go` 改为调用 `registerRootRoute`。存在 `dist/index.html` 时 `GET /` 返回 SPA;无 dist 时保持原行为(非 prod 欢迎页、prod 不注册)。 - 测试:`TestRootServesSPAWhenDistExists`(dev/test/prod 三种模式)、`TestRootWithoutDistKeepsPreviousBehaviour`;`app/admin/router` 全部测试通过;`go build ./...`、`go vet` 通过;改动文件 gofmt 干净。 ### 文档(Wiki-first)`c13dcd3` - Wiki `Deployment-and-Operations` 由 `9c10d971` 更新为 **`3a76e16d`**,在线回读内容一致;`harness.py sync` 与 `sync --check` 通过;只提交 `docs/13-deployment-and-operations.md` 镜像。 - 新增/修改:当前线上拓扑(122.228.200.167)、「Nginx 入口(9527)」标准配置全文及原因、「发布与验证」第 3 步改为**按内容**验收、「服务器迁移清单」8 项、2026-09-28 迁移与首页修复记录。 ### 发现的问题(未处理,需决定) - `sync` 时线上 Wiki 的 `Architecture-and-Code-Map`、`Business-Rules-and-Glossary`、`SYB-ERP-Interface-Contract` 三页**缺少 #343 的内容**,而 main 的镜像已含 #343 描述(疑为直接改镜像未先改 Wiki,或 Wiki 被覆盖)。若按 Wiki 同步会把 #343 文档改回旧内容,因此本单**未提交**这三页镜像。需要把 #343 的内容补回线上 Wiki 后再同步。 - Deployment-and-Operations 页正文开头混入两段旧镜像头(历史同步遗留),本单未改动。 ### 未做 - **未部署**本单代码(线上已靠 nginx 修复恢复;部署另行授权)。 状态:**待验收**。
Author
Owner

验收(2026-09-28)

用户确认:「合并」。

  • 合并:fix/346-root-serves-spa 以 --no-ff 合并提交 bce4897(merge: serve Admin SPA at / and document nginx deployment (#346))并入 main;合并前 main 仍为 9dace6a,测试结果沿用。
  • Wiki Deployment-and-Operations revision 3a76e16d 已在待验收前同步,无需重复。
  • 未部署本单代码;线上已由 nginx 配置修复恢复正常。
  • 遗留:线上 Wiki 三页缺少 #343 内容(见实施回写),待另行处理。

状态:验收通过,关闭。

## 验收(2026-09-28) 用户确认:「合并」。 - 合并:`fix/346-root-serves-spa` 以 `--no-ff` 合并提交 `bce4897`(`merge: serve Admin SPA at / and document nginx deployment (#346)`)并入 main;合并前 main 仍为 `9dace6a`,测试结果沿用。 - Wiki `Deployment-and-Operations` revision `3a76e16d` 已在待验收前同步,无需重复。 - **未部署**本单代码;线上已由 nginx 配置修复恢复正常。 - 遗留:线上 Wiki 三页缺少 #343 内容(见实施回写),待另行处理。 状态:验收通过,关闭。
ila closed this issue 2026-09-28 16:16:37 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#346