モジュール ngx_stream_map_module

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

ngx_stream_map_moduleモジュール(1.11.2)は、他の変数の値によって値が変わる変数を作成します。

設定例

map $remote_addr $limit {
    127.0.0.1    "";
    default      $binary_remote_addr;
}

limit_conn_zone $limit zone=addr:10m;
limit_conn addr 1;

ディレクティブ

構文 map 文字列 $変数 { ... }
既定値
コンテキスト stream

最初の引数で指定した1つ以上のソース変数の値によって値が変わる、新しい変数を作成します。

変数は使用される場合にのみ評価されるため、「map」変数が多数宣言されている場合でも、接続処理に余分なコストは追加されません。

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

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

文字列では、大文字と小文字は区別されません。

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

ソース値が、以下で説明する特別なパラメーターのいずれかの名前に一致する場合、その前に「\」記号を付ける必要があります。

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

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

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

ソース値が指定した複数の変数のいずれかと一致する場合、たとえばマスクと正規表現の両方が一致する場合、次の優先順位で最初に一致する変数が選択されます。

  1. マスクなしの文字列値
  2. プレフィックスマスク付きの最長の文字列値(例: 「*.example.com」)
  3. サフィックス付きの最長の文字列値(例: 「mail.*」)
  4. 最初の一致する正規表現(設定ファイルの出現順)
  5. 既定値

構文 map_hash_bucket_size サイズ;
既定値
map_hash_bucket_size 32|64|128;
コンテキスト stream

map変数のハッシュテーブルの、バケットサイズを設定します。既定値は、プロセッサのキャッシュラインサイズによって決まります。ハッシュテーブルの設定の詳細については、別のドキュメントで説明しています。

構文 map_hash_max_size サイズ;
既定値
map_hash_max_size 2048;
コンテキスト stream

map変数のハッシュテーブルの最大サイズを設定します。ハッシュテーブルの設定の詳細については、別のドキュメントで説明しています。