謎の仕様というかほぼbugかな。
前提
pool を2つ容易
irule
when HTTP_REQUEST { if { [HTTP::path] starts_with "/hoge/" } { pool pool2 } elseif { [HTTP::path] starts_with "/fuga/" } { pool pool2 } }
確認した動作
- http://example.com/foo/ にアクセス
- pool1 で処理
- http://example.com/hoge/ にアクセス
- pool2 で処理
- http://example.com/hoge2/ にアクセス
- pool1 で処理
よし、オッケーと思っていた。
謎の挙動
curl では再現せず、ブラウザによるアクセスで発生。
pool2 で処理するURLにアクセスして、同一ブラウザで数秒以内 (3秒ぐらい?) に
pool1 で処理するURLにアクセスすると、なぜかpool2 に振られる。
- http://example.com/hoge/ にアクセス
- pool2 で処理
- http://example.com/hoge2/ にアクセス
- pool2 で処理 # おかしい
## 解決
irule に明示的にdefaultのpoolを書いたら発生しなくなった。
これが仕様らしい。
when HTTP_REQUEST { if { [HTTP::path] starts_with "/hoge/" } { pool pool2 } elseif { [HTTP::path] starts_with "/fuga/" } { pool pool2 } else { pool pool1 } }