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行追加することをお勧めします。