最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Nginx服務(wù)器中map模塊的配置與使用

 更新時間:2016年01月27日 15:01:28   投稿:goldensun  
這篇文章主要介紹了Nginx服務(wù)器中map模塊的配置與使用,文中同時給出了ngx_http_map_module模塊的map命令用于制作服務(wù)器限速白名單的示例,需要的朋友可以參考下

map指令使用ngx_http_map_module模塊提供的。默認情況下,nginx有加載這個模塊,除非人為的 --without-http_map_module。
ngx_http_map_module模塊可以創(chuàng)建變量,這些變量的值與另外的變量值相關(guān)聯(lián)。允許分類或者同時映射多個值到多個不同值并儲存到一個變量中,map指令用來創(chuàng)建變量,但是僅在變量被接受的時候執(zhí)行視圖映射操作,對于處理沒有引用變量的請求時,這個模塊并沒有性能上的缺失。
一. ngx_http_map_module模塊指令說明
map
語法: map $var1 $var2 { ... }
默認值: —
配置段: http
map為一個變量設(shè)置的映射表。映射表由兩列組成,匹配模式和對應(yīng)的值。
在 map 塊里的參數(shù)指定了源變量值和結(jié)果值的對應(yīng)關(guān)系。
匹配模式可以是一個簡單的字符串或者正則表達式,使用正則表達式要用('~')。
一個正則表達式如果以 “~” 開頭,表示這個正則表達式對大小寫敏感。以 “~*”開頭,表示這個正則表達式對大小寫不敏感。

map $http_user_agent $agent {
    default "";
    ~curl curl;
    ~*apachebench" ab;
}

正則表達式里可以包含命名捕獲和位置捕獲,這些變量可以跟結(jié)果變量一起被其它指令使用。

map $uri $value {
  /ttlsa_com          /index.php;
  ~^/ttlsa_com/(?<suffix>.*)$ /boy/;
  ~/fz(/.*)          /index.php?;              
}

[warning]不能在map塊里面引用命名捕獲或位置捕獲變量。如~^/ttlsa_com/(.*)  /boy/$1; 這樣會報錯nginx: [emerg] unknown  variable。[/warning]如果源變量值包含特殊字符如‘~',則要以‘\'來轉(zhuǎn)義。

map $http_referer $value {
  Mozilla  111;
  \~Mozilla 222;
}

結(jié)果變量可以是一個字符串也可以是另外一個變量。

map $num $limit {
     1 $binary_remote_addr;
     0 "";
}

map指令有三個參數(shù):
default : 指定如果沒有匹配結(jié)果將使用的默認值。當沒有設(shè)置 default,將會用一個空的字符串作為默認的結(jié)果。
hostnames : 允許用前綴或者后綴掩碼指定域名作為源變量值。這個參數(shù)必須寫在值映射列表的最前面。
include : 包含一個或多個含有映射值的文件。
如果匹配到多個特定的變量,如掩碼和正則同時匹配,那么會按照下面的順序進行選擇:
1. 沒有掩碼的字符串
2. 最長的帶前綴的字符串,例如: “*.example.com”
3. 最長的帶后綴的字符串,例如:“mail.*”
4. 按順序第一個先匹配的正則表達式 (在配置文件中體現(xiàn)的順序)
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
設(shè)置映射表對應(yīng)的哈希表的最大值。
二. 實例

http {
 map $http_user_agent $agent {
 ~curl curl;
 ~*chrome chrome;
 }
 server {
    listen    8080;
    server_name test.ttlsa.com;
 
    location /hello {
 default_type text/plain;
 echo http_user_agent: $http_user_agent;
 echo agent: agent:$agent;
 }
 }
}
# curl 127.0.0.1:8080/hello 
http_user_agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
agent: curl

2016127145925832.png (867×112)

2016127145949958.png (646×130)

http {
 map $uri $match {
    ~^/hello/(.*) http://www.ttlsa.com/;
 }
 server {
    listen    8080;
    server_name test.ttlsa.com;
 
    location /hello {
        default_type text/plain;
        echo uri: $uri;
        echo match: $match;
        echo capture: $1;
        echo new: $match$1;
    }
 }
}

2016127150013186.png (482×142)

PS:基于map指令和geo指令的限速白名單配置

http {
 geo $whiteiplist {
 default 1;
 127.0.0.1 0;
 10.0.0.0/8 0;
 121.207.242.0/24 0;
 }
 
 map $whiteiplist $limit {
 1 $binary_remote_addr;
 0 "";
 }
 
 limit_conn_zone $limit zone=limit:10m;
 
 server {
    listen    8080;
    server_name test.ttlsa.com;
 
    location ^~ /ttlsa.com/ {
        limit_conn limit 4;
        limit_rate 200k;
        alias /data/www.ttlsa.com/data/download/;
    }
 }
}

技術(shù)要點:
1. geo指令定義一個白名單$whiteiplist, 默認值為1, 所有都受限制。 如果客戶端IP與白名單列出的IP相匹配,則$whiteiplist值為0也就是不受限制。
2. map指令是將$whiteiplist值為1的,也就是受限制的IP,映射為客戶端IP。將$whiteiplist值為0的,也就是白名單IP,映射為空的字符串。
3. limit_conn_zone和limit_req_zone指令對于鍵為空值的將會被忽略,從而實現(xiàn)對于列出來的IP不做限制。
測試方法:

# ab -c 100 -n 300 http://test.ttlsa.com:8080/ttlsa.com/docs/pdf/nginx_guide.pdf

您可能感興趣的文章:

相關(guān)文章

  • nginx實現(xiàn)單主機多域名映射的項目實踐

    nginx實現(xiàn)單主機多域名映射的項目實踐

    本文主要介紹了nginx實現(xiàn)單主機多域名映射的項目實踐,配置不同的子域名映射到不同的內(nèi)部服務(wù)端口,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • Ubuntu使用nginx搭建webdav文件服務(wù)器的詳細過程

    Ubuntu使用nginx搭建webdav文件服務(wù)器的詳細過程

    今天通過本文給大家分享Ubuntu使用nginx搭建webdav文件服務(wù)器的詳細過程,在這小編提示大家在安裝nginx時需要先安裝nginx-full,具體安裝方法跟隨小編一起通過本文學習下吧
    2021-05-05
  • nginx?反向代理負載均衡策略配置SSL訪問匹配規(guī)則優(yōu)先級

    nginx?反向代理負載均衡策略配置SSL訪問匹配規(guī)則優(yōu)先級

    本文主要包含1.Nginx配置文件詳解2.Nginx實現(xiàn)負載均衡3.Nginx前端項目部署4.Nginx配置SSL訪問5.nginx匹配規(guī)則說明以及匹配的優(yōu)先級的內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • nginx部署https網(wǎng)站的實現(xiàn)步驟(親測)

    nginx部署https網(wǎng)站的實現(xiàn)步驟(親測)

    本文詳細介紹了使用Nginx在保持與http服務(wù)兼容的情況下部署HTTPS,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02
  • nginx 部署 vue 項目找不到j(luò)s css文件的解決方法

    nginx 部署 vue 項目找不到j(luò)s css文件的解決方法

    這篇文章主要介紹了nginx 部署 vue 項目找不到j(luò)s css文件的解決方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • Nginx查看當前連接數(shù)的配置方法

    Nginx查看當前連接數(shù)的配置方法

    在開發(fā)過程中有時候我們需要查看Nginx的當前連接數(shù),方便調(diào)整一些參數(shù)配置和性能調(diào)優(yōu),在Nginx中,你可以通過幾種方式來查看當前的連接數(shù),感興趣的朋友一起看看吧
    2024-08-08
  • 強大的 Web 應(yīng)?服務(wù)器OpenResty安裝(Nginx倉庫)

    強大的 Web 應(yīng)?服務(wù)器OpenResty安裝(Nginx倉庫)

    OpenResty 是?個強大的 Web 應(yīng)?服務(wù)器,Web 開發(fā)?員可以使用 Lua 腳本語?調(diào)動 Nginx ?持的各種 C 以及 Lua 模塊,更主要的是在性能方面,OpenResty可以快速構(gòu)造出足以勝任 10K 以上并發(fā)連接響應(yīng)的超高性能 Web 應(yīng)用系統(tǒng)
    2023-06-06
  • Nginx + Tomcat實現(xiàn)請求動態(tài)數(shù)據(jù)和請求靜態(tài)資源的分離詳解

    Nginx + Tomcat實現(xiàn)請求動態(tài)數(shù)據(jù)和請求靜態(tài)資源的分離詳解

    這篇文章主要給大家介紹了關(guān)于Nginx + Tomcat實現(xiàn)請求動態(tài)數(shù)據(jù)和請求靜態(tài)資源的分離的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • 你知道Nginx嗎,利用Nginx反向代理的操作方法

    你知道Nginx嗎,利用Nginx反向代理的操作方法

    Nginx是一個高性能的HTTP和反向代理服務(wù)器,可以用于反向代理,客戶端只與Nginx交互,而不知道后端服務(wù)器的存在,以下是一個簡單的Nginx反向代理配置示例,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Nginx配置ssl證書(https)的全過程

    Nginx配置ssl證書(https)的全過程

    這篇文章主要介紹了Nginx配置ssl證書(https)的過程,在文中大家需要特別注意,如果有防火墻的話,記得開通443端口,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-10-10

最新評論

鄂托克前旗| 广西| 息烽县| 沭阳县| 新干县| 蓬安县| 红桥区| 尼木县| 红河县| 鲁甸县| 丰原市| 平利县| 黄平县| 永城市| 五大连池市| 北流市| 嵊州市| 五指山市| 宜良县| 樟树市| 平昌县| 抚顺市| 开江县| 双城市| 万载县| 那曲县| 二连浩特市| 维西| 孝义市| 旌德县| 贞丰县| 前郭尔| 定陶县| 耒阳市| 河源市| 临湘市| 勃利县| 沽源县| 栾城县| 库车县| 阿勒泰市|