文档 配置 Rematch

Rematch

严格来说它不是一个真正的代理协议,而是一种特殊出站:命中它之后不会真正发出连接,而是给流量打个标签,重新跑一遍规则匹配(或跳转到某个子规则)。

配置示例

config.yaml YAML
proxies:
  - name: "rematch"
    type: rematch
    target-rematch-name: "rematch1"
    target-sub-rule: "sub-rule1"

字段说明

target-rematch-name可选

覆盖流量 metadata 中的 rematch-name 标签,之后可以用 REMATCH-NAME 规则匹配这个标签。

target-sub-rule可选

填写后会直接进入指定的子规则继续匹配;如果名称不存在或留空,则回退到主 rules

使用示例

标记后继续匹配主规则
YAML rematch-name
proxies:
  - name: "mark-streaming"
    type: rematch
    target-rematch-name: "streaming"

rules:
  - REMATCH-NAME,streaming,Streaming
  - DOMAIN-SUFFIX,netflix.com,mark-streaming
  - MATCH,DIRECT

请求首次命中 DOMAIN-SUFFIX,netflix.com,mark-streaming 时,会给流量写入 rematch-name: streaming 并重新进入规则匹配;这次会优先命中前面的 REMATCH-NAME,streaming,Streaming

REMATCH-NAME 规则要写在触发 rematch 的规则之前,否则重新匹配时可能再次命中同一个 rematch 出站,形成死循环。

跳转到子规则
YAML sub-rule
proxies:
  - name: "use-ai-rules"
    type: rematch
    target-sub-rule: "ai-rules"

rules:
  - DOMAIN-SUFFIX,openai.com,use-ai-rules
  - MATCH,DIRECT

sub-rules:
  ai-rules:
    - DOMAIN-SUFFIX,openai.com,AI
    - MATCH,DIRECT

命中 use-ai-rules 后会直接跳到 ai-rules 子规则继续匹配。子规则里建议加一条 MATCH 兜底,避免匹配不到任何规则。