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. 帶有前綴遮罩的最長字串值,例如「*.example.com
  3. 帶有後綴遮罩的最長字串值,例如「mail.*
  4. 第一個符合的正規表示式 (按照設定檔中的出現順序)
  5. 預設值

語法 map_hash_bucket_size size;
預設值
map_hash_bucket_size 32|64|128;
上下文 http

設定 map 變數雜湊表的儲存桶大小。預設值取決於處理器的快取行大小。設定雜湊表的詳細資訊請參閱單獨的文件

語法 map_hash_max_size size;
預設值
map_hash_max_size 2048;
上下文 http

設定 map 變數雜湊表的最大 size。設定雜湊表的詳細資訊請參閱單獨的文件