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)。
如果來源值與多個指定的變體相符,例如,遮罩和正規表示式都符合,則會選擇第一個符合的變體,優先順序如下
- 不帶遮罩的字串值
- 帶有前綴遮罩的最長字串值,例如「
*.example.com
」 - 帶有後綴遮罩的最長字串值,例如「
mail.*
」 - 第一個符合的正規表示式 (按照設定檔中的出現順序)
- 預設值
語法 |
map_hash_bucket_size |
---|---|
預設值 |
map_hash_bucket_size 32|64|128; |
上下文 |
http |
設定 map 變數雜湊表的儲存桶大小。預設值取決於處理器的快取行大小。設定雜湊表的詳細資訊請參閱單獨的文件。
語法 |
map_hash_max_size |
---|---|
預設值 |
map_hash_max_size 2048; |
上下文 |
http |