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 |
一つ目のパラメータで指定される一つ以上の元となる変数の値に依存する新しい変数を作成します。
バージョン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)。
元の値が指定された変数の一つ以上と一致した場合、例えばマスクと正規表現の両方に一致した場合は、以下の優先度に従って最初に一致した変数が選ばれます:
- マスク無しの文字列
-
プリフィックスマスクの最も長い文字列l、例えば"
*.example.com
" -
サフィックスマスクの最も長い文字列l、例えば"
mail.*
" - 最初に一致した正規表現(設定ファイル内で現れた順番)
- デフォルト値
構文: |
map_hash_bucket_size |
---|---|
デフォルト: |
map_hash_bucket_size 32|64|128; |
コンテキスト: |
http |
map変数のハッシュテーブルのbucketサイズを設定します。デフォルト値はプロセッサのキャッシュラインのサイズに依存します。ハッシュテーブルの設定の詳細は別個のドキュメントで提供されています。
構文: |
map_hash_max_size |
---|---|
デフォルト: |
map_hash_max_size 2048; |
コンテキスト: |
http |
map変数のハッシュテーブルの最大size
を設定します。ハッシュテーブルの設定の詳細は別個のドキュメントで提供されています。