はじめに:
2010年最初の「今月のiRule」は、iRuleによるHTTPSリダイレクトをご紹介します。
簡単ですがHTTPSサイトを運用している管理者にとっては非常に役に立つiRuleです。
まだiRuleを使用したことのない方は、是非挑戦してみてください。

例えば、下記の状況がよくあります:

  • 当初、SSL認証なしにサイトを立ち上げたのですが、しばらくしてSSLでサイトを運用したいとゆう要望がでてきた。
  • ユーザが現在ブックマークしているHTTPアドレスから、自動でHTTPSにジャンプしてほしい。
  • ホストヘッダ情報に基づいてサイトにアクセスしてくるクライアントを特定のURLにリダイレクトしたい。

今回ご紹介するiRuleでは、ユニバーサル・ホスト・リダイレクトが実現可能となり、上記の要件をすべて満たすことができます。

下記URLでもご確認いただけます。
http://devcentral.f5.com/Wiki/default.aspx/iRules/Universal_Host_Redirect.html

タイトル:iRuleによるHTTPSリダイレクト(ユニバーサル・ホスト・リダイレクト)

メリット:
ホストヘッダ情報に基づいてサイトにアクセスしてくるクライアントを特定のURLにリダイレクト
HTTPでアクセスした時、自動的にHTTPSにrewriteすることを実現。

機能説明:
このiRuleのキーコマンドはswitchコマンドになります。
switchコマンドは条件の値に対応する文を実行するための条件文の一種です。
複数のif-elseifコマンドよりBIG-IPに負荷のかからない分岐コマンドです。

iRuleの流れとしては、まずクライアントがアクセスしたURLのヘッダ情報(文字列)を検査します。
「-glob:」オプションで「*」や「?」のワイルドカードを利用してマッチするヘッダ情報があれば、指定のURLにクライアントをリダイレクトします。
マッチする文字列がない場合に実行するコマンドを指定するには、最後に「default」を利用して、デフォルトのURLにリダイレクトさせます。

設定概要:
iRuleをリダイレクトをさせたいvirtual serverに適用します。
用途に応じて検査したiRules中のHTTPヘッダの名前や、値を変更/追加することによって柔軟に対応していくことが可能です。

【iRule定義】


when HTTP_REQUEST {
   switch -glob [string tolower [HTTP::host]] {
      "*abc*" {
         # add the redirect link ie "www.xyz.com"
         HTTP::redirect "https://www.xyz.com/xyz"
      }
      default {
         # add the default action you prefer ie "www.def.com"
         HTTP::redirect "https://[HTTP::host][HTTP::uri]"
      }
   }
}

※F5ネットワークスジャパンでは、サンプルコードについて検証を実施していますが、お客様の使用環境における動作を保証するものではありません。実際の使用にあたっては、必ず事前にテストを実施することを推奨します。