日志与错误消息

所有消息都走 nginx 的 error_log,前缀固定为 cfd_tunnel:;块隧道再带一段 [名字] 或 [#序号]。

级别约定 ​

级别什么时候
NOTICE正常生命周期:注册成功、快速隧道地址、来源地址生效、混合模式说明
WARN可继续但值得注意:路径超长不做规则匹配、remote_config 混合模式提示
ERR失败:凭据读取/解析失败、连接边缘失败、provisioning 失败、裸 TCP 流被丢弃、注入目标不存在
INFO只有 cfd_tunnel_verbose on 才有:协议细节

成功路径的消息 ​

消息(片段)级别含义
已注册到边缘(location=…),注入目标 …NOTICE注册成功,location 是边缘地址,注入目标是解析后的 listen
快速隧道临时地址(重启即变)https://…NOTICE临时隧道申请成功;cfd-quick-url 就是抓这一行
快速隧道模式(quick on):只有 0 号 worker …NOTICE说明 quick tunnel 只由 0 号 worker 建立
注入连接的来源地址 = …(默认是 127.0.0.1) + 配套 set_real_ip_from 写法NOTICE配了 inject_source_addr 时的启动说明
已应用远程配置 version=…(N 条规则;…)NOTICE边缘下发的配置被接受

失败路径的消息 ​

消息(片段)原因处置
读取凭据 … 失败文件不存在或 worker 用户读不到权限 / 路径
token 不是合法的 base64内联 token 带空白、缺 = 填充、用了 URL-safe 字符见 凭据
token 解出来不是 JSON解出来的字节不是 JSON 对象那是别的 base64,不是 token
token 里的 t 不是合法 uuid / s 不是合法的 base64字段内容坏重新从控制台复制
token 带 endpoint/regiontoken 有 e本模块只连一个 cfd_tunnel_edge
连接边缘 … 失败DNS / TCP / TLS / 代理看 verbose 细节行
provisioning 失败quick service 不可达 / 返回非 200 / ALPN 不是 h2检查网络与 cfd_tunnel_quick_service
裸 TCP 隧道流被丢弃流头带 Cf-Cloudflared-Proxy-Src这是定案行为,不是 bug
注入目标 … 不存在 / 有歧义inject_listen 指不到唯一 listen改配置
远程配置 version=… 被拒绝:…内层规则非法(含不支持的正则语法),旧规则表不动看日志里的原因字符串,改 dashboard 的 ingress
收到远程配置 version=…,但当前已应用 …版本没变大,整个忽略(与 cloudflared 一致)不需要处理

抓消息的几条命令 ​

bash
# 最近 20 条模块日志
grep -E 'cfd_tunnel' /var/log/nginx/error.log | tail -20

# 只看失败
grep -E '\[error\].*cfd_tunnel' /var/log/nginx/error.log | tail -20

# 只看快速隧道地址
grep -o '快速隧道临时地址(重启即变)https://[^ ]*' /var/log/nginx/error.log | tail -1

# 只要某条块隧道
grep 'cfd_tunnel: \[edge-a\]' /var/log/nginx/error.log | tail -20

日志里没有秘密

token 与 secret 从不写进日志 —— 只打来源、字节数与账号标签。贴日志求助是安全的。

模块文档 · 对齐依据是 cloudflared 的源码与实测行为