Skip to main content
未知字段会直接触发反序列化错误,因为全局启用了 #[serde(deny_unknown_fields)]。时间字段使用 humantime 格式,例如 "30s""500ms""2m"

顶层结构


node

用于控制 worker 数、连接上限和全局 I/O 超时。

io_uring

控制每个 worker 线程的 io_uring 参数。该段全部字段变更都需要重启进程。
如果 arc_ring_sq_dropped_totalarc_ring_cq_overflow_total 非 0,通常说明 ring 太小,建议将 uring_entries 翻倍。

listeners

监听器是一个数组,每个元素绑定一个地址。 kind 可选值: socket 可选项:

tls

仅在监听器 kindhttpsh3 时生效。 certificates 元素字段: 数组第一张证书会作为未命中 SNI 的兜底证书。

tls.acme

用于从 ACME CA 自动签发并续期证书。 account_key 字段: challenge 类型: 完整 ACME 示例:

upstreams

这是命名上游组数组,路由通过 name 引用上游。

discovery

静态地址:
DNS 发现:

lb(负载均衡)

一致性哈希 key 来源可以是 client_ipheader(需 name)或 cookie(需 name)。

health

主动健康检查:
被动健康检查:

pool(连接池)

timeouts(上游超时)

tls(上游 TLS)

可选。配置后 Arc 会与上游建立 TLS 连接。 完整上游 TLS 示例见 TLS 与证书

routes

路由规则为数组。匹配优先级遵循“更具体优先”:精确路径优先于通配路径,长路径优先于短路径。

match

路径模式: Header 谓词 op 可选:existscontainsregexequals。全部操作都需要 name;值比较类操作还需要 valuepattern

action

Header 变更操作 opaddsetremove retry 字段:

rate_limit

key 策略可选:client_ipheader(需 name)或 route(全路由共享桶)。

mirror

split(流量分流)


plugins

全局插件注册区。路由通过名字引用插件。

WASM 插件字段

Rhai 脚本字段

把插件绑定到路由

stage 可选值:

observability

控制指标与管理端点。访问日志配置在下文 logging

logging

控制结构化 NDJSON 访问日志。logging 是顶层字段,和 observability 分离。 logging.output logging.access
observability.access_log.sample(默认 1.0)和 logging.access.sample(默认 0.01)是两个独立字段。前者是旧参数,后者会覆盖前者。新配置建议统一使用 logging.access.sample
logging.redact logging.writer

control_plane

control_plane 下所有字段变更都需要重启进程。 接口说明见 网关控制面 API 参考

完整示例