map模組使用方法

2021-09-07 00:10:37 字數 3108 閱讀 2871

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 檔...