更新设计文档,增加 HTTPS/TLS 支持、证书托管与域名管理功能,调整相关交付标准与检查项

This commit is contained in:
ryan
2026-03-10 09:49:49 +08:00
parent 580baad0ac
commit f7c5eb1cc9
3 changed files with 147 additions and 105 deletions
+25 -16
View File
@@ -13,8 +13,9 @@
第二版在此基础上新增以下能力:
* HTTPS/TLS 路由支持
* 证书托管(手动导入与文件导入)
* 域名管理与证书自动匹配(支持 `*.example.com`)
* Agent Token 管理
* 节点分组与差异化下发
* 路由自定义请求头
* 配置预览与变更摘要
@@ -23,8 +24,9 @@
* 多租户
* WAF、限流、Bot、防刷
* 百分比灰度发布
* 节点分组与差异化下发
* Redis、MQ、对象存储、Prometheus
* 复杂缓存策略、证书托管、Purge、审批流
* 复杂缓存策略、证书自动签发、Purge、审批流
* mid-tier、分层缓存、复杂策略编排
超出以上范围的需求,必须先更新设计文档,再开始编码。
@@ -63,16 +65,19 @@ Agent 放在 `atsf_agent`,使用 Go 单体程序开发。
### 2.3 Nginx 配置边界
第一版控制面只管理独立生成的 Nginx 路由配置文件,例如 `/etc/nginx/conf.d/atsflare_routes.conf`。
第一版控制面只管理独立生成的 Nginx 路由配置文件,例如 `/etc/nginx/conf.d/atsflare_routes.conf`。第二版在此基础上增加证书托管能力。
以下内容先不纳入控制面:
第一版以下内容不纳入控制面:
* `nginx.conf`
* TLS 证书
* 缓存策略
* upstream 高级配置
这些内容先保持节点本地静态配置。
第二版约束:
* 允许在控制面托管 TLS 证书并下发给节点
* 仅支持证书导入(手动粘贴与文件导入),不做自动签发/续期
* `nginx.conf`、缓存策略、upstream 高级配置仍保持节点本地静态配置
## 3. 仓库职责划分
@@ -119,7 +124,7 @@ Agent 放在 `atsf_agent`,使用 Go 单体程序开发。
* Server 只管状态和配置,不直接 SSH 改节点。
* Agent 是唯一落地入口。
* 所有发布都是"新版本激活",不是在线覆盖编辑。
* 第一版:所有节点默认拉同一份全量配置;第二版:可按节点分组差异化下发。
* 第一版与第二版:所有节点默认拉同一份全量配置,不做节点分组差异化下发。
* 能用 SQLite 解决的问题,不引入额外中间件。
* 新功能优先复用现有 gin-template 结构,不平行造第二套框架。
@@ -134,7 +139,8 @@ Agent 放在 `atsf_agent`,使用 Go 单体程序开发。
第二版新增实体:
* `node_groups` — 节点分组
* `tls_certificates` — 证书托管
* `managed_domains` — 域名管理与证书绑定
* `agent_tokens` — Agent Token 管理
约束(全版本):
@@ -142,9 +148,10 @@ Agent 放在 `atsf_agent`,使用 Go 单体程序开发。
* 不新增 `zone`、`origin_pool`、`policy`、`deployment` 这类平台化对象
* `proxy_routes` 一条域名只对应一个 `origin_url`
* `config_versions` 必须保存完整快照和渲染后的 Nginx 路由配置
* 同一分组内激活版本只能有一个;全量版本(group_id = null)全局只能有一个
* 激活版本全局只能有一个,不引入分组维度
* 回滚通过"激活旧版本"实现,不直接修改历史记录
* `agent_tokens` 中的 Token 值不可更新,只能创建或撤销
* 域名到证书匹配必须支持精确匹配和通配符匹配(如 `*.example.com`)
如需新增表,必须先证明它服务于当前迭代版本的主链路。
@@ -383,11 +390,12 @@ Server 新增覆盖:
* HTTPS server 块渲染正确性(`enable_https=true` 时生成 443 块,`redirect_http=true` 时生成重定向块)
* HTTP-only 路由渲染结果不受 HTTPS 字段影响
* 证书导入逻辑(手动导入、文件导入)和 PEM 校验逻辑
* 域名证书匹配逻辑(精确匹配与 `*.example.com` 通配符匹配)
* `custom_headers` 注入到渲染结果的正确性
* `agent_tokens` 创建与查表验证逻辑
* Token 撤销后验证失败
* bootstrap Token 降级行为(数据库有 Token 时环境变量 Token 失效)
* 分组发布逻辑(group_id 筛选激活版本)
* 预览接口不写库
* diff 接口变更摘要计算正确性
@@ -403,12 +411,13 @@ Server 新增覆盖:
### 10.4 联调验收标准(第二版)
1. 创建含 HTTPS 字段的路由并发布,Nginx 能以 HTTPS 正确转发
2. 通过管理界面创建 Token,Agent 使用新 Token 成功访问
3. 撤销 Token 后 Agent 请求返回 401
4. 创建分组并按分组发布,不同分组节点拉到不同版本
5. 路由配置自定义头后,渲染结果包含对应指令
6. 发布页预览展示正确渲染结果
7. 变更摘要正确列出域名变化
2. 控制面可手动导入和文件导入证书,导入后可被路由选择
3. 反代规则输入域名后可自动匹配证书,且支持 `*.example.com`
4. 通过管理界面创建 Token,Agent 使用新 Token 成功访问
5. 撤销 Token 后 Agent 请求返回 401
6. 路由配置自定义头后,渲染结果包含对应指令
7. 发布页预览展示正确渲染结果
8. 变更摘要正确列出域名变化
## 11. 文档维护规范