From 3d6606d0cdfe13ef017aff2165a01a0c279eac0d Mon Sep 17 00:00:00 2001 From: anonsaber Date: Wed, 30 Sep 2026 19:07:17 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20deployment.md=20=C2=A710/=C2=A710.9=20?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=20origin=20=E5=88=97=E8=A1=A8=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=20[vars]=20=E6=98=8E=E6=96=87=E4=BE=8B=E5=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - §10 部署步骤:BACKEND_ORIGINS_JSON 从 secret 注入改为 wrangler.toml 的 [vars], secret put 降级为「出现非公开值时」的回退路径,并写明边界。 - §10.9 预览命令说明:预览环境现在能拿到 [vars] 里的 origin(能跑通转发); 改回 secret 注入时才会退回只能验证 Worker 拉起 + 路由表生效。 - GATE-DOCS 6/6 clean(114 anchors / 252 sec-refs / 474 path-refs)。 --- docs/deployment.md | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/docs/deployment.md b/docs/deployment.md index 74232ce..bd128b2 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -775,19 +775,34 @@ Stalwart PushSub ────┼─▶ https://lb..workers.dev ← 唯 - 后端各实例 env 必须共享同一组 secret(`C-LB-SHARED-SECRETS`)。 - 已注册 Cloudflare 账号与 Workers 计划。 -**配置**(所有值通过 `wrangler secret` 注入,**禁止**写入 `wrangler.toml` 或 `git` 明文) +**配置**(origin 列表当前是 `cloudflare-worker/wrangler.toml` 的 `[vars]`,见下方**明文例外**) ```bash cd cloudflare-worker npm install --no-audit --no-fund -npx wrangler secret put BACKEND_ORIGINS_JSON # JSON 数组,见下方示例 -# 可选(带默认值) +npx wrangler deploy +# 可选(带默认值,dashboard 的 Add Variable 或 CLI 二选一) npx wrangler secret put LB_REQUEST_TIMEOUT_MS # 默认 10000ms npx wrangler secret put LB_MAX_ATTEMPTS # 默认 2(首次 + 1 次故障转移) npx wrangler secret put LB_RECONCILE_TIMEOUT_MS # 默认 320000ms,仅 POST /reconcile 生效 npx wrangler secret put LB_HEALTH_TTL_MS # 默认 30000ms ``` +`wrangler.toml` 里的当前值: + +```toml +[vars] +BACKEND_ORIGINS_JSON = '["https://messageweave-eu-1.motofans.club"]' +``` + +**明文例外及其边界**:origin 只是公开可达的 https 地址,不是凭据,所以可以随仓库走(好处是 +配置在 PR 里可审,预览环境也能拿到)。一旦要放内网地址、带内嵌凭据的 URL、或不想公开的 +staging 主机名,立刻从 `[vars]` 删掉、改用 secret 注入(git 历史不可逆,删掉不等于没进过库): + +```bash +npx wrangler secret put BACKEND_ORIGINS_JSON +``` + `BACKEND_ORIGINS_JSON` 示例(**仅允许 `https://` origin**,其它会让配置解析失败,`C-HTTPS-INBOUND`): ```json @@ -884,9 +899,10 @@ Git 集成**必须改的四个字段**(Cloudflare 的默认值对不上本仓 4. **`wrangler preview` 子命令不存在。** wrangler 4.144.0 的子命令只有 `dev` / `deploy` / `deployments`,默认那个值填了必然失败。预览命令填 `npx wrangler dev --ip 0.0.0.0 --port 8787` (8787 是 `wrangler dev` 的默认端口,`--ip 0.0.0.0` 让 Cloudflare 的预览代理能连进来)。 - ⚠️ 预览环境**没有** `BACKEND_ORIGINS_JSON`(secret 只存在于你的账号配置,仓库里不该有 - `.dev.vars`),所以预览只能验证「Worker 能被拉起 + 路由表生效 + `/healthz` 返回 200 但 - `status` 是 `no-backends`」,**不能**验证后端转发。后端转发只能看生产。 + ⚠️ 但预览环境**拿不到** dashboard 里加的 secret:现在 `BACKEND_ORIGINS_JSON` 写在 + `wrangler.toml` 的 `[vars]` 里,预览因此也能跑通转发;**一旦改回 secret 注入**,预览就只剩 + 「Worker 能被拉起 + 路由表生效 + `/healthz` 返回 200 但 `status` 是 `no-backends`」, + **不能**验证后端转发,转发只能看生产。(仓库里也不该有 `.dev.vars`,它只对 `wrangler dev` 生效。) **Node 版本不用管。** Cloudflare 环境实测给的是 `nodejs@24.18.0`,本地在 Node 24.21.0 与 22.23.3 上都验过(32/32 通过)。**wrangler 已升到 4.144.0**:3.114.17 在 CI 里会打印