fix: preserve live Nginx entry when saved draft differs
This commit is contained in:
1 parent
e4f1059880
commit
97da0a57b6
10 files changed
+115
-3
No files matched your search
@@ -22,11 +22,12 @@
|
||||
- FR-02:失败时包括缺失/过期目标证书、端口冲突、`nginx -t`/reload 或配置持久化失败,恢复旧站点和旧状态并返回具体错误。
|
||||
- FR-03:首次配置但尚无托管站点时,保存后提示“待启用站点”,点击启用后无须重启;切换进程入口模式明确提示重启。
|
||||
- FR-04:运行中的 OpenVPN OIDC 使用旧公网回调时,禁止修改会使其回调失效的入口地址。
|
||||
- FR-05:启动时若历史保存配置与已启用的 Nginx 站点不符,保持实际站点与身份 issuer 一致,展示待应用配置,而非在启动时静默覆盖站点。
|
||||
- NFR-01:只允许管理员修改;拒绝覆盖不属于本应用的站点;更新操作与证书上传/身份路由刷新互斥。
|
||||
|
||||
## 3. 架构与方案
|
||||
|
||||
保存接口按运行模式分支:Nginx 托管站点先校验新域名证书与活跃 OIDC 引用,在锁内生成站点、备份原内容、原子替换、测试及 reload,再持久化公网配置并更新 `tlsservice` 内存;任何步骤失败回滚站点与配置。未启用站点只保存草稿;启用站点成功后更新内存。Go 模式原有需重启语义保留。前端按 `restart_required`、`site_activation_required` 和 `applied` 分别提示。
|
||||
保存接口按运行模式分支:Nginx 托管站点先校验新域名证书与活跃 OIDC 引用,在锁内生成站点、备份原内容、原子替换、测试及 reload,再持久化公网配置并更新 `tlsservice` 内存;失败恢复原站点。未启用站点只保存草稿;启用站点成功后更新内存。启动时解析现有托管站点,与持久化配置不一致则使用实际入口作为运行态并保持原站点,页面显示待应用配置。Go 模式原有需重启语义保留。前端按 `restart_required`、`site_activation_required` 和 `applied` 分别提示。
|
||||
|
||||
## 4. 接口、数据与配置契约
|
||||
|
||||
@@ -41,6 +42,7 @@
|
||||
| 新入口证书不可用 | 拒绝 HTTPS 切换,旧站点不动 | 4xx 及原证书继续可用 |
|
||||
| Nginx 校验/重载失败 | 恢复站点并重新 reload;返回错误 | 5xx、`nginx -t`、健康检查 |
|
||||
| 已连接 OIDC 专线回调旧地址 | 拒绝修改公网地址 | 409 与原专线可用 |
|
||||
| 旧版本保存的 HTTP 草稿在升级重启后覆盖 HTTPS | 启动时先对比实际 Nginx 站点,不一致时采用站点运行态 | 公网仍提供旧 HTTPS,日志提示草稿待应用 |
|
||||
| 旧站点归属不明 | 拒绝覆盖 | 错误提示;人工检查 |
|
||||
|
||||
| AC | 对应需求 | 前置与操作 | 预期结果 | 验证方式 | 结果 |
|
||||
@@ -49,6 +51,7 @@
|
||||
| AC-02 | FR-02 | 无证书、无效端口或模拟 reload 失败 | 不丢失旧入口、状态不变化 | 单测与配置检查 | 回滚单测通过;在线异常待验证 |
|
||||
| AC-03 | FR-03 | 尚未启用站点保存,再启用 | 不要求重启;Go 模式仍准确提醒 | 单测、前端构建 | 本地通过;首次启用实机待验证 |
|
||||
| AC-04 | FR-04 | 有 OIDC 专线运行时修改回调根地址 | 拒绝并保留原站点 | API 模块测试 | 本地拒绝与停用后放行测试通过;在线拒绝路径待验证 |
|
||||
| AC-05 | FR-05 | 已保存 HTTP 草稿,运行站点仍为 HTTPS | 重启后不重写站点,运行态 issuer 仍为 HTTPS | 解析单测、运行态单测、实机回归 | 本地测试通过;历史草稿实机待验证 |
|
||||
|
||||
## 6. 发布与恢复
|
||||
|
||||
|
||||
Reference in new issue
Block a user