作 ▸
Squidでリクエストヘッダの値を見て親プロキシに振り分ける
req_header
で振り分けます。
Amazon LinuxSquid 3.5.20
browser でも referer でも mime-type でもないヘッダの値を見たいので、req_header
を使います。
acl aclname req_header header-name [-i] any\.regex\.here # regex match against any of the known request headers. May be # thought of as a superset of "browser", "referer" and "mime-type" # ACL [fast]
このページの例は以下のような感じです。
- 親プロキシは
my.parent.proxy
のポート9999とします。 - リクエストヘッダに
X-Hogehoge
が入っており、値がpiyo
ならmy.parent.proxy
に転送します。 - それ以外のリクエストはこのプロキシでアクセスします。
また、この例では固定値ですが、req_header
は正規表現で指定できます。-i
オプションをつけると大文字小文字を問わなくなるらしいです。
# このプロキシは全てのアクセスを受け付ける
http_access allow all
# cache_peerとして親プロキシ (飛ばし先プロキシ) 定義
cache_peer my.parent.proxy parent 9999 0 no-query
# rule1定義 = 「リクエストヘッダの X-Hogehoge の値が piyo (大文字小文字問わず) なら」
acl rule1 req_header X-Hogehoge -i piyo
# rule1にマッチするなら my.parent.proxy を使う
cache_peer_access my.parent.proxy allow rule1
# rule1にマッチするならcache_peerを必ず使う
never_direct allow rule1
# rule1にマッチしないならcache_peerは使わない
always_direct allow !rule1
# このプロキシはポート8080で待ち受ける
http_port 8080
もっと簡潔に書ける方法が分かったら修正します。