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)。

如果來源值與多個指定的變體匹配,例如,遮罩和正規表示式都匹配,則將選擇第一個匹配的變體,優先順序如下:

  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 變數雜湊表的最大 大小。雜湊表設定的詳細資訊在單獨的文件中提供。