ngx_http_map_moduleモジュール

設定例
ディレクティブ
     map
     map_hash_bucket_size
     map_hash_max_size

ngx_http_map_moduleモジュールは変数の値が他の変数に依存するような変数を作成します。

設定例

map $http_host $name {
    hostnames;

    default       0;

    example.com   1;
    *.example.com 1;
    example.org   2;
    *.example.org 2;
    .example.net  3;
    wap.*         4;
}

map $http_user_agent $mobile {
    default       0;
    "~Opera Mini" 1;
}

ディレクティブ

構文: map string $variable { ... }
デフォルト: -
コンテキスト: http

一つ目のパラメータで指定される一つ以上の元となる変数の値に依存する新しい変数を作成します。

バージョン0.9.0以前は一つ目のパラメータに一つの変数しか指定できませんでした。

変数は使われる時のみ評価されるため、たとえ多数の"map"変数を宣言してもリクエストの処理に余分なコストは掛かりません。

map ブロックの中のパラメータは元の値と結果の値のマッピングを指定します。

値は文字列あるいは正規表現(0.9.6)として指定されます。

合致する文字列は大文字小文字の区別をしません。

正規表現は、大文字小文字を区別する"~"記号から始まるものか、大文字小文字を区別しない"~*"記号(1.0.4)から始まるものかのどちらかでなければなりません。正規表現には、後で他のディレクティブの中で結果の変数として使うことができる名前と位置のキャプチャを含むことができます。

元となる値が下で説明する特別なパラメータの名前の一つに一致する場合、"\"記号を前に置く必要があります。

結果の値には、テキスト、変数 (0.9.0)、それらの組み合わせ (1.11.0)を含めることができます。

次の特別なパラメータもサポートされています:

default value
元の値が指定されて変数のどれとも一致しない場合に、結果の値を設定します。defaultが指定されない場合、デフォルトの結果の値は空の文字列になるでしょう。
hostnames
ホスト名となりえる、プリフィックスまたはサフィックスマスクを持つ元の値を示します。
*.example.com 1;
example.*     1;
次の二つのレコードは
example.com   1;
*.example.com 1;
結合することができます:
.example.com  1;
このパラメータは値のリストの前に指定する必要があります。
include file
値のファイルをインクルードします。複数のインクルードが可能です。
volatile
変数がキャッシュ可能では無いことを示します (1.11.7)。

元の値が指定された変数の一つ以上と一致した場合、例えばマスクと正規表現の両方に一致した場合は、以下の優先度に従って最初に一致した変数が選ばれます:

  1. マスク無しの文字列
  2. プリフィックスマスクの最も長い文字列l、例えば"*.example.com"
  3. サフィックスマスクの最も長い文字列l、例えば"mail.*"
  4. 最初に一致した正規表現(設定ファイル内で現れた順番)
  5. デフォルト値

構文: map_hash_bucket_size size;
デフォルト:
map_hash_bucket_size 32|64|128;
コンテキスト: http

map変数のハッシュテーブルのbucketサイズを設定します。デフォルト値はプロセッサのキャッシュラインのサイズに依存します。ハッシュテーブルの設定の詳細は別個のドキュメントで提供されています。

構文: map_hash_max_size size;
デフォルト:
map_hash_max_size 2048;
コンテキスト: http

map変数のハッシュテーブルの最大sizeを設定します。ハッシュテーブルの設定の詳細は別個のドキュメントで提供されています。

TOP
inserted by FC2 system