map指令使用ngx_http_map_module模組提供的。預設情況下,nginx有載入這個模組,除非人為的 --without-http_map_module。
ngx_http_map_module模組可以建立變數,這些變數的值與另外的變數值相關聯。允許分類或者同時對映多個值到多個不同值並儲存到乙個變數中,map指令用來建立變數,但是僅在變數被接受的時候執行檢視對映操作,對於處理沒有引用變數的請求時,這個模組並沒有效能上的缺失。
map語法: map $var1 $var2
預設值: —
配置段: http
map為乙個變數設定的對映表。對映表由兩列組成,匹配模式和對應的值。
在 map 塊裡的引數指定了源變數值和結果值的對應關係。
匹配模式可以是乙個簡單的字串或者正規表示式,使用正規表示式要用('~')。
乙個正規表示式如果以 「~」 開頭,表示這個正規表示式對大小寫敏感。以 「~*」開頭,表示這個正規表示式對大小寫不敏感。
正規表示式裡可以包含命名捕獲和位置捕獲,這些變數可以跟結果變數一起被其它指令使用。
map $uri $value
[warning]不能在map塊裡面引用命名捕獲或位置捕獲變數。如~^/ttlsa_com/(.*) /boy/$1; 這樣會報錯nginx: [emerg] unknown variable。[/warning]如果源變數值包含特殊字元如『~』,則要以『\』來轉義。
結果變數可以是乙個字串也可以是另外乙個變數。
map $num $limit
map指令有三個引數:
default : 指定如果沒有匹配結果將使用的預設值。當沒有設定 default,將會用乙個空的字串作為預設的結果。
hostnames : 允許用字首或者字尾掩碼指定網域名稱作為源變數值。這個引數必須寫在值對映列表的最前面。
include : 包含乙個或多個含有對映值的檔案。
如果匹配到多個特定的變數,如掩碼和正則同時匹配,那麼會按照下面的順序進行選擇:
1. 沒有掩碼的字串
2. 最長的帶字首的字串,例如: 「*.example.com」
3. 最長的帶字尾的字串,例如:「mail.*」
4. 按順序第乙個先匹配的正規表示式 (在配置檔案中體現的順序)
5. 預設值
map_hash_bucket_size
語法: map_hash_bucket_size size;
預設值: map_hash_bucket_size 32|64|128;
配置段: http
指定乙個對映表中的變數在雜湊表中的最大值,這個值取決於處理器的快取。
map_hash_max_size
語法: map_hash_max_size size;
預設值: map_hash_max_size 2048;
配置段: http
設定對映表對應的雜湊表的最大值。
附自己的乙個例項:
map使用方法
map相對於set的區別,map具有鍵值和實值,所有元素根據鍵值自動排序,pair的第一元素被稱為鍵值,第二元素被稱為實值,map也是以紅黑樹為底層實現機制 map建構函式 mapmaptt map預設建構函式 map const map mp 拷貝建構函式 map賦值操作 map賦值操作map o...
map的使用方法
map是c 的乙個標準容器,她提供了很好一對一的關係,在一些程式中建立乙個map可以起到事半功倍的效果,總結了一些map基本簡單實用的操作!1.map最基本的建構函式 mapmapstring mapmapint mapmapstring map char string mapchar mapmap...
json 模組使用方法
json檔案即使為空,內部也要有乙個空的 否則讀入就會報錯 dump 轉成str格式並儲存到檔案 dumps 僅轉成str格式並不能儲存到檔案 import json 匯入json模組 取資料 with open file,r encoding utf 8 as f data json.load 檔...