正規表現 (REGEX) は、ロード バランサ ルールの一致条件で使用されます。

高度な使用方法ではいくつかの制限がありますが、Perl 互換の正規表現 (PCRE) スタイルの正規表現パターンがサポートされています。一致条件に正規表現を使用する場合、名前付きキャプチャ グループがサポートされます。

正規表現には以下の制限事項があります。

  • 文字を和集合および共通部分で表現することはサポートされません。たとえば、[a-z[0-9]] および [a-z&&[aeiou]] と表現せず、それぞれ [a-z0-9] および [aeiou] と表現します。
  • 後方参照は 9 までサポートされ、\1 ~ \9 を使用して参照できます。
  • 8 進数に一致させるには、\ddd 形式ではなく \0dd 形式を使用します。
  • 最上位のレベルでは組み込みフラグはサポートされません。グループ内でのみサポートされます。たとえば、「Case (?i:s)ensitive」は使用せずに、「Case ((?i:s)ensitive)」を使用します。
  • 前処理演算子 \l、\u、\L、\U はサポートされません。ここで、\l は次の文字を小文字にする演算子、\u は次の文字を大文字にする演算子、\L は \E までの文字を小文字にする演算子、\U は \E までの文字を大文字にする演算子です。
  • (?(condition)X)、(? {code})、(??{Code}) および (?#comment) はサポートされません。
  • 事前定義済みの Unicode 文字クラス \X はサポートされません。
  • Unicode 文字の名前付き構文を使用した参照はサポートされません。たとえば、\N{name} は使用せずに \u2018 を使用します。

    一致条件に正規表現を使用する場合、名前付きキャプチャ グループがサポートされます。たとえば、正規表現による一致パターン「/news/(?<year>\d+)-(?<month>\d+)-(?<day>\d+)/(?<article>.*)」は、「/news/2018-06-15/news1234.html」のような URI との一致に使用されます。

    ここで変数を以下のように設定します:$year = "2018" $month = "06" $day = "15" $article = "news1234.html"。設定後の変数は、ロード バランサ ルールのアクションで使用できます。たとえば、URI は一致する変数を使用して「/news.py?year=$year&month=$month&day=$day&article=$article」のように書き換えることができます。したがって URI は「/news.py?year=2018&month=06&day=15&article=news1234.html」と書き換えられます。

    書き換えアクションにより、名前付きキャプチャ グループと組み込みの変数を組み合わせて使用できます。たとえば、URI は「/news.py?year=$year&month=$month&day=$day&article=$article&user_ip=$_remote_addr」と記述できます。したがって例の URI は「/news.py?year=2018&month=06&day=15&article=news1234.html&user_ip=1.1.1.1」と書き換えられます。

    注: 名前付きキャプチャ グループの名前は、「_」文字で開始できません。
    名前付きキャプチャ グループのほか、書き換えアクションでは次の組み込みの変数も使用できます。組み込みの変数の名前はすべて「_」で始まります。
    • $ _args:要求からの引数
    • $_arg_<name>:要求行の <name> 引数
    • $_cookie_<name>:<name> Cookie の値
    • $_upstream_cookie_<name>:アップストリーム サーバによって送信された Cookie。Set-Cookie 応答ヘッダー フィールドに名前が指定されます。
    • $_upstream_http_<name>:任意の応答ヘッダー フィールドで、<name> は小文字に変換され、ダッシュをアンダースコアで置き換えたフィールド名
    • $_host:優先順位で、要求行からのホスト名、「Host」要求のヘッダーフィールドからのホスト名、または要求に一致するサーバ名
    • $_http_<name>:任意の要求のヘッダー フィールドで、<name> は小文字に変換され、ダッシュをアンダースコアで置き換えたフィールド名
    • $_https:接続が SSL モードで機能している場合は "on"、それ以外の場合は ""
    • $_is_args:要求行に引数がある場合は "?"それ以外の場合は ""
    • $ _query_string:$_args と同じ
    • $ _remote_addr:クライアント アドレス
    • $ _remote_port:クライアント ポート
    • $ _request_uri:元の完全な要求 URI(引数を含む)
    • $ _scheme:要求のスキーム、"http" または "https"
    • $ _server_addr:要求を承認したサーバのアドレス
    • $ _server_name:要求を承認したサーバの名前
    • $ _server_port:要求を承認したサーバのポート
    • $_server_protocol:申請プロトコル、通常、"HTTP/1.0" または "HTTP/1.1"
    • $_ssl_client_escaped_cert:確立された SSL 接続のクライアント証明書を PEM 形式で返します。
    • $_ssl_server_name:SNI で要求されたサーバ名を返します
    • $ _uri:要求内の URI パス
    • $_ssl_ciphers:クライアントの SSL 暗号を返します
    • $_ssl_client_i_dn:RFC 2253 に従って確立された SSL 接続のクライアント証明書の issuer DN 文字列を返します
    • $_ssl_client_s_dn:RFC 2253 に従って確立された SSL 接続のクライアント証明書の subject DN 文字列を返します
    • $_ssl_protocol:確立された SSL 接続のプロトコルを返します
    • $_ssl_session_reused:SSL セッションが再利用された場合は 「r」、それ以外の場合は 「.」を返します