Nginx模組參考手冊:Map模組(Map)

來源:互聯網
上載者:User
關鍵字 nginx Map模組

這些模組預設會全部編譯進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部分優化。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.