指令总览
模块共有 42 条指令:
| 类别 | 条数 | 在哪 |
|---|---|---|
扁平指令 cfd_tunnel_* | 29 | http {}(模块级) |
块指令 cfd_tunnel | 1 | http {},每条隧道一个块 |
| 块内指令 | 12 | cfd_tunnel { … } 里 |
| 合计 | 42 | 与 ngx_command_t 的 42 项逐条对数一致 |
29 条扁平指令的分组
| 分组 | 条数 | 指令 |
|---|---|---|
| 连接与凭据 | 8 | credentials、token、token_file、edge、inject_listen、ca_file、insecure、version |
| 时序与重连 | 7 | connect_timeout、handshake_timeout、ping_interval、ping_timeout、reconnect_delay、reconnect_max、conn_index |
| 日志 | 1 | verbose |
| 接收侧背压 | 7 | stream_bq_hwm、global_bq_limit、global_bq_reject_ratio、stream_stall_window、stream_stall_ratio、stream_stall_min_bq、conn_window_early_release |
| 快速隧道 | 3 | quick_tunnel、quick_service、quick_timeout |
| 远程配置 | 2 | remote_config、host_override |
| 注入来源地址 | 1 | inject_source_addr |
12 条块内指令
name、credentials、token、token_file、quick、quick_service、quick_timeout、 inject_listen、inject_source_addr、remote_config、host_override、conn_index。
继承与作用域
| 指令 | 模块级 | 块内 | 块内默认 |
|---|---|---|---|
edge / 超时 / 重连 / 背压 / 日志 / ca_file / insecure | ✅ | ❌(只有模块级) | 所有隧道共用 |
inject_source_addr | ✅ | ✅ | 块内不写 ⇒ 继承模块级 |
quick_service / quick_timeout | ✅ | ✅ | 块内不写 ⇒ 继承模块级 |
inject_listen | ✅ | ✅ | 块内必须写(除非开了 remote_config) |
host_override / remote_config | ✅ | ✅ | 块内不写 ⇒ 不启用 / 继承判断 |
name / conn_index | ❌ | ✅ | name 缺省用 #序号;conn_index 缺省按 worker |
三个必须记住的互斥
- 凭据来源
credentials/token/token_file三选一(块内加上quick是四选一)。 - 块写法与扁平写法不能混用(
inject_source_addr/quick_service/quick_timeout例外, 它们本来就设计成「模块级一份 + 块内可覆盖」)。 - 快速隧道与凭据互斥。
任何一条违反都是 配置期 EMERG(nginx -t 直接失败),不是运行时才报。