F5 BIG-IP URIによるpoolの振り分け

メーカー製品

F5のSSLアクセラレータBIG-IPのiruleについて

iruleの記法って、サポートに問い合わせても合ってるとか教えてくれないんですよね。サポート外って。。。なので、今後何か新しいことをやるたびにメモとして残しておく。

困ってる人への光となれ。(そんな聖人君子じゃないw)
※サムネのURL-routingっていう言い方が合ってるかどうかは知りませんorz

やりたいこと

  • 構成補足
    • BIG-IPのSSLアクセラレータでHTTPSを終端し、サーバにはHTTPで通信を行う
    • 正式に発効されたサーバ証明書のプロファイルに、クライアント証明書を追加しセキュリティを上げる
  • https://hogehoge.piteki.com/
    • 誰でもアクセス可
  • https://hogehoge.piteki.com/secure/
    • クライアント証明書のインストールされたPCのみアクセス可

URI毎に振り分けるpoolを変えたい場合のirule

  • 構成図
  • irule
when HTTP_REQUEST {
  ## set default pool
  pool main-pool

  if { [HTTP::path] starts_with "/japan/events/" } {
    pool sub-pool_japan_events
  } elseif { [HTTP::path] starts_with "/korea/events/" } {
    pool sub-pool_korea_events
  } elseif { ([HTTP::path] starts_with "/japan/")  ||
           ( [HTTP::path] starts_with "/korea/" ) ||
           ( [HTTP::path] starts_with "/china/" )}  {
    pool sub-pool_country
  } else {
  pool main-pool
  }
}

「default pool」は無くても動作するが入れた方が良いと聞いた記憶。理由を忘れた。。。

上記の環境で一部だけsorryページにリダイレクトさせる

  • 構成図
  • irule
when HTTP_REQUEST {
  ## set default pool
  pool main-pool

  if { [HTTP::path] starts_with "/japan/events/" } {
    pool sub-pool_japan_events
  } elseif { ([HTTP::path] starts_with "/japan/")  ||
           ( [HTTP::path] starts_with "/korea/" ) ||
           ( [HTTP::path] starts_with "/china/" )}  {
    HTTP::respond 302 Location https://sorry.piteki.com
  } else {
  pool main-pool
  }
}

「/korea/events/」は「/korea/」に含まれるので不要

コメント