這些模組預設會全部編譯進Nginx,除非手工指定某個模組在configure時排除。
這個模組允許你分類或者同時映射多個值到多個不同值並儲存到一個變數中,map指令用來創建變數,但是僅在變數被接受的時候執行視圖映射操作,對於處理沒有引用變數的請求,這個模組並沒有性能上的缺失。
如下例:
map $HTTP_host $name { hostnames; default 0; example.com 1; *.example.com 1; test.com 2; *.test.com 2; .site.com 3;}
一個典型的使用映射的例子是代替一個含有很多伺服器的/location或者重定向:
map $uri $new { default HTTP://www.domain.com/home/; /aa HTTP://aa.domain.com/; /bb HTTP://bb.domain.com/; ^/cc/(? P<suffix>.*)$ HTTP://cc.domain.com/$suffix; /john HTTP://my.domain.com/users/john/;}
指令
map
語法:map $var1 $var2 { ... }
預設值:none
使用欄位:HTTP
map為一個變數設置的映射表。
映射表由兩列組成,匹配模式和對應的值,匹配模式可以是一個簡單的字串或者正則運算式,使用正則運算式要用('~')
map $uri $myvalue { /aa /mapped_aa; ~^/aa/(?<suffix>.*)$ /mapped_bb/$suffix;}
如果有一個以波浪號開頭的字串,但是其並不是一個正則運算式,可以是用反斜線 ('\'):
map $HTTP_referer $myvalue { Mozilla 1234; \~Mozilla 5678;}
map指令有三個指定的參數:
default - 指定如果沒有匹配結果將使用的預設值。 hostnames - 允許對類似主機名稱的值進行簡單的查詢匹配,第一個點後面的部分將用作精確的主機名稱。 例如:*.example.com 1;
而不是寫成兩個:
example.com 1;*.example.com 1;
可以只寫成一條:
.example.com 1; include - 包含一個含有映射值的檔,可以包含多個。
map_hash_max_size
語法:map_hash_max_size number
預設值:map_hash_max_size 2048
使用欄位:HTTP
這個指令設置映射表對應的雜湊表的最大值,更多資訊可以參考nginx部分優化。
map_hash_bucket_size
語法:map_hash_bucket_size n
預設值:map_hash_bucket_size 32/64/128
使用欄位:HTTP
這個指令指定一個映射表中的變數在雜湊表中的最大值,這個值取決於處理器的緩存,更多資訊可以參考nginx部分優化。