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 |
建立一個新的變數,其值取決於第一個參數中指定的一個或多個來源變數的值。
由於變數只有在使用時才會被評估,即使僅聲明大量「map
」變數,也不會對連線處理增加任何額外成本。
map
區塊內的參數指定來源值和結果值之間的對應關係。
來源值指定為字串或正規表示式。
字串的匹配會忽略大小寫。
正規表示式應以「~
」符號開頭進行區分大小寫的匹配,或以「~*
」符號開頭進行不區分大小寫的匹配。正規表示式可以包含具名和位置捕獲,這些捕獲稍後可以在其他指令中與結果變數一起使用。
如果來源值與下面描述的特殊參數之一的名稱相符,則應以「\
」符號作為前綴。
結果值可以包含文字、變數及其組合。
還支援以下特殊參數
default
值
- 如果來源值與任何指定的變體都不匹配,則設定結果值。如果未指定
default
,則預設結果值將為空字串。 hostnames
- 表示來源值可以是帶有前綴或後綴遮罩的主機名稱
以下兩個記錄*.example.com 1; example.* 1;
可以組合example.com 1; *.example.com 1;
此參數應在值列表之前指定。.example.com 1;
include
檔案
- 包含具有值的檔案。可以有多個包含。
volatile
- 表示變數不可快取 (1.11.7)。
如果來源值與多個指定的變體匹配,例如,遮罩和正規表示式都匹配,則將選擇第一個匹配的變體,優先順序如下:
- 不帶遮罩的字串值
- 帶有前綴遮罩的最長字串值,例如「
*.example.com
」 - 帶有後綴遮罩的最長字串值,例如「
mail.*
」 - 第一個匹配的正規表示式(按照組態檔案中的出現順序)
- 預設值
語法 |
map_hash_bucket_size |
---|---|
預設 |
map_hash_bucket_size 32|64|128; |
上下文 |
stream |
為 map 變數雜湊表設定儲存桶大小。預設值取決於處理器的快取行大小。雜湊表設定的詳細資訊在單獨的文件中提供。
語法 |
map_hash_max_size |
---|---|
預設 |
map_hash_max_size 2048; |
上下文 |
stream |