モジュール 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 文字列 $変数 { ... }
デフォルト
コンテキスト http

最初の引数に指定された 1 つ以上のソース変数の値に依存した値を持つ新しい変数を作成します。

バージョン 0.9.0 より前は、最初の引数で変数を 1 つだけ指定できました。

変数は使用時にのみ評価されるので、多数の「map」変数を宣言しても、リクエストの処理に追加コストは発生しません。

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

ソース値は、文字列または正規表現 (0.9.6) として指定されます。

文字列は、大文字小文字を無視して照合されます。

正規表現は大文字小文字を区別する照合の場合は「~」記号から、大文字小文字を区別しない照合の場合は「~*」記号 (1.0.4) から開始する必要があります。正規表現には名前付きキャプチャと位置キャプチャを含めることができ、結果変数と共に他のディレクティブで使用できます。

ソース値が下記の特殊パラメータのいずれかの名前と一致する場合は、「\」記号をプレフィックスとして付ける必要があります。

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

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

default value
ソース値が指定されたいずれのバリアントとも一致しない場合、結果値を設定します。default が指定されていない場合、デフォルトの結果値は空の文字列になります。
hostnames
ソース値は、プレフィックスまたはサフィックスマスクを使用したホスト名であることを示します
*.example.com 1;
example.*     1;
次の 2 つのレコード
example.com   1;
*.example.com 1;
を組み合わせることができます。
.example.com  1;
このパラメータは値のリストの前に指定する必要があります。
include file
値を含むファイルをインクルードします。インクルードは複数指定できます。
volatile
変数がキャッシュできないことを示します (1.11.7)。

ソース値が指定されたバリアントの複数 (例: マスクと正規表現の両方) と一致する場合、次の優先順位で最初のマッチしたバリアントが選択されます。

  1. マスクのない文字列値
  2. プレフィックスマスクを使用した最長の文字列値 (例: 「*.example.com」)
  3. サフィックスマスクを使用した最長の文字列値 (例: 「mail.*」)
  4. 最初のマッチした正規表現 (設定ファイルの出現順)
  5. デフォルト値

構文 map_hash_bucket_size サイズ;
デフォルト
map_hash_bucket_size 32|64|128;
コンテキスト http

map 変数ハッシュテーブルのバケットサイズを設定します。デフォルト値はプロセッサのキャッシュラインサイズによって異なります。ハッシュテーブルの設定に関する詳細は、別の ドキュメント に記載されています。

構文 map_hash_max_size サイズ;
デフォルト
map_hash_max_size 2048;
コンテキスト http

map 変数ハッシュテーブルの最大サイズを設定します。ハッシュテーブルの設定に関する詳細は、別の ドキュメント に記載されています。