ルール名 : mobile_persistence

機能 :
携帯電話パーシステンスiRuleは、携帯電話からの接続を同一サーバに維持する機能(パーシステンス)を提供します。
クライアントからの接続を携帯キャリア(NTTドコモ/AU/Softbank)ごとに適切な識別情報を利用し、最適なサーバプールに接続維持します。

ベネフィット :
パーシステンス処理には通常HTTPヘッダのCookieがよく使われますが、携帯電話ではCookieが使えないことがあるため別途実装が 必要になります。
よく行われるのは、アプリケーションでレスポンスに識別情報を付与し、それに基づいてパーシステンスする方法です。
携帯電話パーシステンスiRuleを使うことで、アプリケーションでの作り込みが不要となり、サーバ環境の開発コスト、管理コストの低減を図れます。

使い方 :
NTTドコモ公式サイトでは、ユーザ個人を識別する情報を使ってパーシステンスすることが可能です。
その場合は、use_nullgwdocomoを「1」に設定してください(デフォルトは「0」で、user_agent(機種)ごとのパーシステンスになります)。

rule mobile_persistence { 
when RULE_INIT {
 
  #Set this to 1 if your site uses uid=NULLGWDOCOMO URL parameters to request uids
  set ::use_nullgwdocomo 0
}
when HTTP_REQUEST {
  if { [string tolower [HTTP::header User-Agent]] contains "docomo" } {
     if { $::use_nullgwdocomo and [findstr [string tolower [HTTP::uri]] "uid=" 4 "&"] ne "" } {
        persist uie [findstr [string tolower [HTTP::uri]] "uid=" 4 "&"]
     } else {
        persist uie [HTTP::header User-Agent]
     }
  } elseif { [HTTP::header exists "x-up-subno"] } {
     persist uie [HTTP::header "x-up-subno"]
  } elseif { [HTTP::header exists "x-jphone-uid"] } {
       persist uie [HTTP::header "x-jphone-uid"]
  } else {
       switch -glob [string tolower [HTTP::header User-Agent]] {
         "*jphone*" -
         "*vodafone*" -
         "*softbank*" { persist uie [findstr [string tolower [HTTP::header User-Agent]] "sn" 2] }
         default { persist uie [HTTP::header User-Agent] }
      }
  }

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