fix: temporarily restore public api proxy
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-05-03 12:16:26 +08:00
parent fecac5344a
commit 8e6d1971ea
3 changed files with 55 additions and 9 deletions

View File

@@ -43,9 +43,9 @@
## 生产架构
- Nginx 作为唯一公网入口,负责 HTTPS、静态站点、后台静态页面、维护页`/admin/api/` 反向代理。
- Nginx 作为唯一公网入口,负责 HTTPS、静态站点、后台静态页面、维护页`/admin/api/` 反向代理,以及临时兼容期的主站 `/api/*` 反向代理。
- SpacetimeDB 作为系统服务运行,监听 `127.0.0.1:3101`,数据根目录为 `/stdb``3000` 保留给部署机本机 Git/Web 服务,禁止再让 SpacetimeDB 占用该端口。
- Rust `api-server` 作为系统服务运行,监听 `127.0.0.1:8082`,只被 Nginx 的 `/admin/api/` 访问
- Rust `api-server` 作为系统服务运行,监听 `127.0.0.1:8082`。当前临时兼容期仍允许 Nginx 将主站 `/api/*``/admin/api/` 反向代理到该服务;前端完成 SpacetimeDB SDK / bindings 直连迁移后,再删除公网 `/api/*` 反代
- 主站与后台前端构建为静态文件,发布到服务器固定目录,不放入 Jenkins 目录,也不跟随 Docker 镜像。
- 除网站静态发布外,`api-server` 发布、SpacetimeDB 模块发布、数据库导入、服务器配置变更都必须先进入维护模式。
@@ -100,22 +100,24 @@
- `/`:主站静态页面。
- `/admin/`:后台前端静态页面,后台构建时使用 `/admin/` 作为 base path。
- `/admin/api/`:反向代理到 `http://127.0.0.1:8082/admin/api/`
- `/api``/api/*`:临时反向代理到 `http://127.0.0.1:8082`,保留原始请求 URI用于兼容当前主站前端仍在使用的 HTTP facade。
- HTTP 到 HTTPS`production-https` 模式只保留 301 重定向。
- `/maintenance.html`:维护中页面。
移除这些公网反向代理:
当前仍需移除这些公网反向代理:
- `/api/*`
- `/generated-*`
- 公网 `/healthz`
- 其他旧的一体化 web server 代理入口。
`/api/*` 仅作为临时兼容债务保留,不代表生产长期 API 暴露策略。后续主站前端完成 SpacetimeDB SDK / bindings 接入后,必须从 Nginx 模板中删除 `/api``/api/*` 反代,并恢复其公网 404 行为。
SpacetimeDB 公网路由默认保持收敛,只按实际前端 SDK 需要暴露最小集合。禁止开放可远程发布数据库或管理实例的通用入口。
Nginx 配置文件分为两类:
- `deploy/nginx/genarrative.conf`:生产正式域名 HTTPS 配置,`genarrative.example.com` 只是占位域名,安装时必须替换为真实 `SERVER_NAME`,并要求 `/etc/letsencrypt/live/<SERVER_NAME>/fullchain.pem``privkey.pem` 已存在。
- `deploy/nginx/genarrative-dev-http.conf`:开发服无域名时的 HTTP-only 配置,只允许 `DEPLOY_TARGET=development` 使用。没有域名时,`SERVER_NAME` 填开发机 IP 或临时主机名。它仍复用同一套静态目录、后台 API 反代和 SpacetimeDB SDK 最小公网路由,不恢复旧 `/api/*``/generated-*` 或公网 `/healthz`
- `deploy/nginx/genarrative-dev-http.conf`:开发服无域名时的 HTTP-only 配置,只允许 `DEPLOY_TARGET=development` 使用。没有域名时,`SERVER_NAME` 填开发机 IP 或临时主机名。它仍复用同一套静态目录、后台 API 反代、临时主站 `/api/*` 反代和 SpacetimeDB SDK 最小公网路由,不恢复旧 `/generated-*` 或公网 `/healthz`
## 维护模式