Rematch

厳密には本当のプロキシプロトコルではなく、特殊な出口の一種です。ヒットすると実際には接続を発行せず、トラフィックにタグを付けて再度ルールマッチングを行います(または特定のサブルールにジャンプします)。

設定例

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

フィールドの説明

target-rematch-nameオプション

トラフィックのメタデータ内の 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 を1行追加することをお勧めします。