MessageWeave/cloudflare-worker/wrangler.toml

55 lines
3.9 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Wrangler 配置 — MessageWeave 多实例 LB/HA(ARCH-LB-WORKER / deployment.md §10)。
#
# 注意:TOML 只支持 '#' 注释。这里曾经用 JSDoc 的 /** */ 块,Cloudflare 的 TOML
# 解析器会把 '*' 当成未知字符(wrangler 报 Unknown character "47"),deploy /
# secret put / dev 在读取配置文件时就失败——所以全部展开成 '#' 行。
#
# 安全约束(docs/charter.md §3/§5,稳定 ID 注册表 §8):
# - 后端 origin 仅允许 https(C-HTTPS-INBOUND / C-HTTPS-URL);env 校验时拒绝
# http/非 https/内嵌凭据。
# - 不代理 Redis/JMAP(C-NO-DB / C-REDIS-ONLY-STATE):Worker 只做请求转发,后端连自己的 Redis。
# - 不使用 WebSocket/SSE/长轮询(C-NO-LONG-CONN):纯请求-响应转发。
# - 真 secret 不进代码/日志(SAF-LOG-PURITY / C-NO-SECRET-IN-IMAGE;C-LB-SHARED-SECRETS:
# 所有后端实例共享同一组 secret)。唯一明文例外是 [vars] 里的 BACKEND_ORIGINS_JSON——
# 它的值只是公开 https origin,不是凭据(见该段的「明文例外的边界」)。
# - 日志无密钥(SAF-LOG-PURITY):只打「方法/路径/origin/失败类别」,密钥一律不进日志。
# - 仅允许转发 safelist 路由(C-LB-SINGLE-REG-URL);未知路径 404。
#
# 部署:
# cd cloudflare-worker
# npx wrangler deploy
# BACKEND_ORIGINS_JSON 现在写在下方 [vars](见该段的注释与例外条款);
# 仅当里面出现非公开值时才改用 `npx wrangler secret put BACKEND_ORIGINS_JSON`。
name = "messageweave-lb"
main = "src/index.js"
compatibility_date = "2025-01-01"
compatibility_flags = ["nodejs_compat_v2"]
# 统一 HTTPS 入站(C-HTTPS-URL;平台代 TLS,Worker 内为短请求模型)。
# BACKEND_ORIGINS_JSON 只接受「字符串数组」——每项是一个 https origin;不支持
# {"url":…, "weight":…} 这种对象形式(parseBackendOrigin 只认字符串,对象项会让
# 整份配置解析失败,而配置是**每个请求**重新解析的,所以会表现为**每个请求都 503**,
# 不是启动即失败):
# BACKEND_ORIGINS_JSON 形如 ["https://a.platform1.example","https://b.platform2.example"]
# LB_HEALTH_TTL_MS 可选,健康缓存 TTL(默认 30000)
# LB_REQUEST_TIMEOUT_MS 可选,单 origin 超时(默认 10000,建议 > 最坏 cold start)
# LB_MAX_ATTEMPTS 可选,每请求最多 origin 尝试次数(默认 2:首次 + 1 次故障转移,
# 对应 deployment.md §10.4「有界重试其它实例(建议 1 次)」)
# LB_RECONCILE_TIMEOUT_MS 可选,仅 POST /reconcile 的超时覆盖(默认 320000)
# LB_WORKER_TIMEOUT_MS 可选,仅 POST /worker 的超时覆盖(默认 300000)
# 两条都是外部 cron 触发的同步长任务,且都强制 maxAttempts=1
# 不故障转移(第二实例对 /reconcile 必然撞锁 409、对 /worker 只会
# 重复排同一批消息),所以各配一个更长的超时,不能用全局 10s
# LB_VERSION 版本标识,回显在 GET /healthz-worker 的 JSON 里;用于确认线上是哪次部署
# 在回答(改 LB 逻辑的提交同时 bump 它)
#
# ⚠️ 明文例外的边界:[vars] 里的 origin 只能是**公开可达的 https origin**(当前就是)。
# 一旦出现内网地址、带内嵌凭据的 URL、或不想公开的 staging 主机名,立刻从 [vars] 删掉,
# 改用 `npx wrangler secret put BACKEND_ORIGINS_JSON`(git 历史不可逆,删掉不等于没进过库)。
# 其余五个 LB_* 调参保持可调、不写死,用 dashboard 的 Add Variable 覆盖默认值即可;
# LB_VERSION 是例外——它是版本标识,必须跟代码同版本、可 diff,写进 dashboard 反而容易漂。
[vars]
BACKEND_ORIGINS_JSON = '["https://messageweave-eu-1.motofans.club","https://messageweave-eu-2.motofans.club"]'
LB_VERSION = "2026.10.14"