在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

map指令簡單介紹

馬哥Linux運維 ? 來源:博客園白--茶 ? 2025-02-13 09:54 ? 次閱讀

map指令簡單介紹

當然這里寫的都是官方文檔是已經寫過的,我簡單抄一下哈。

map指令來自于ngx_http_map_module模塊,提供的核心能力是 基于一個變量創建一個新變量,大概是這意思。

語法: 只能配置在http塊內
map string $variable {...}

直接看這個語法好像看不出來它能干什么,所以官方文檔上給了幾個例子:

map $http_host $name {
    hostnames;

    default       0;

    example.com   1;
    *.example.com 1;
    example.org   2;
    *.example.org 2;
    .example.net  3;
    wap.*         4;
}

解析一下上面這個例子的意思:

map: 關鍵字,開辟一段內存空間聲明一個map

$http_host: 獲取host請求頭:eg: www.baidu.com

$name: 新變量,具體取值是什么取決于結構體內的映射關系

結構體內的數據解析:
    hostnames:
    - 官方文檔給出的解釋是:允許用前綴或者后綴掩碼指定域名作為源變量值。這個參數必須寫在值映射列表的最前面。

    讀都能讀的懂,字也都認識,但是怎么感覺好像還是不太懂呢,又沒有同感?于是我測試了一下,其實就是你想用下面那種泛域名來匹配host的話就加一下這個參數, 否則是達不到預期效果的。

    default 0; :匹配不到符合條件的數據時 則$name 這個變量就取默認值 0

知道了這之后我能用它來做什么呢?看實際應用的例子

map指令的實踐使用

1. 基于cookie做多環境分流

一般中大型公司都會有多套測試環境,對于多環境的訪問可能最容易想到的就是對應多個域名,這方法當然可以,但是不優雅,維護多個域名太累。為了偷懶,我們用了一個域名,使用不同的cookie來轉發相應的流量到相應的環境。

如何實現?

    map $cookie_cl_env_num $cl_backend_map {
        default   1.1.1.1:80;
        dev-01    upstream_dev-01;
        dev-02    upstream_dev-02;
        dev-03    upstream_dev-03;
        test-01   upstream_test-01;
        test-02   upstream_test-02;
        test-03   upstream_test-03;
        test-04   upstream_test-04;
        test-05   upstream_test-05;
        test-06   upstream_test-06;
        test-07   upstream_test-07;
        test-08   upstream_test-08;
        test-09   upstream_test-09;
        test-10   upstream_test-10;
        test-11   upstream_test-11;
        test-12   upstream_test-12;
        test-13   upstream_test-13;
        test-14   upstream_test-14;
        test-15   upstream_test-15;
    }

    # 隨便寫一個
    upstream upstream_test-14 {
        server 2.2.2.2:80;
    }

    # 局部實現寫一下
    location / {
        pass_pass http://$cl_backend_map;
    }

    # 請求
    curl --cookie "cl_env_num=test-15" a.test.com/api/v1/hahaha

這不就實現了嘛,很方便哈。僅提供思路!當然也可以使用其他變量來分流 UA|args ...

2. 做安全的多域名跨域訪問

跨域訪問一般情況下我們都會直接設置 * 允許所有跨域訪問。但是難免會有一些對安全性要求較高的業務不允許這樣,那么對于域名比較多的安全跨域配置,也可以使用map來實現。

map $http_origin $allow_origin {
    ~http://www.baidu.com http://www.baidu.com;
    ~http://m.baidu.com   http://m.baidu.com;
    ~http://a.baidu.com   http://a.baidu.com;
    default               deny;
}

server {
    listen 80;
    server_name www.baidu.com;

    location / {
        ...
        add_header Access-Control-Allow-Origin $allow_origin;
        ...
    }
}

僅提供思路哈,具體情況可以再優化

總結

當然還有很多場景都可以用到, 無法一一列舉, 自己能夠根據需求和場景靈活運用是最好的。

鏈接:https://www.cnblogs.com/chaizhenhua/p/16247460.html

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2740

    瀏覽量

    47821
  • 指令
    +關注

    關注

    1

    文章

    613

    瀏覽量

    35848

原文標題:Nginx的map指令還能這樣用

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    簡單介紹ARM的指令

    寄存器內容進行操作,而不是直接對內存內容。簡單尋址模式,所有load/store地址由寄存器內容和指令確定。該體系結構定義了處理單元與內存(包括緩存)的交互,并包括內存地址翻譯系統。它還描述了多個處理
    發表于 08-18 10:58

    MDK編譯生成的MAP文件內容介紹

    MDK編譯生成的MAP文件內容
    發表于 01-08 06:57

    介紹編譯器生成的map和htm文件

    第10章 STM32H7的FLASH,RAM和棧使用情況(map和htm文件)本章為大家介紹編譯器生成的map和htm文件進行解析,通過這兩個文件可以讓大家對工程代碼的認識程度提升一個檔次。目錄第10章 STM32H7...
    發表于 08-03 07:52

    總線的簡單介紹

    一、總線的簡單介紹: 處理器無疑是計算機中最重要的部件,但并不是唯一的部件。一臺計算機也需要隨機訪問存儲器(RAM)來存放機器碼指令以便讓處理器執行。計算機還必須有一些方法使這些指令
    發表于 08-05 07:25

    介紹一些MOV與ADD指令簡單例子

    因為嵌入式系統學習需要,開始學習匯編語言學習資料是B站的視頻:匯編語言程序 P9目錄一、一些簡單指令例子二、一個練習一、一些簡單指令例子下圖是一些
    發表于 01-07 06:39

    制作一個簡單的AT指令

    制作一個簡單的AT指令解析最近在開發nrf51822工作上需要搭建一個簡單的AT指令庫,突然靈機一動想到了這個樣一個簡單的AT解析函數,雖然
    發表于 01-21 10:08

    基于MAP的嵌入式MP3播放器設計與實現

    基于MAP的嵌入式MP3播放器設計與實現:多媒體應用處理器簡稱MAP,是一種適用于便攜式數字音視頻設備的新型嵌入式應用處理器。文中介紹MAP 的主要性能特點,給出了基于
    發表于 08-02 14:50 ?38次下載

    Map Service Engine Based On We

    Abstract:A design and implementation of map service engine based on web is introduced
    發表于 07-23 10:43 ?17次下載

    MC8051_IP核簡單指令的仿真步驟

    MC8051_IP核簡單指令的仿真步驟。
    發表于 05-06 11:47 ?0次下載

    mapreduce 中MAP進程的數量怎么控制?

    1.如果想增加map個數,則設置mapred.map.tasks 為一個較大的值2.如果想減小map個數,則設置mapred.min.split.size 為一個較大的值3.如果輸入中有很多小文件,依然想減少
    發表于 01-02 14:04 ?1921次閱讀
    mapreduce 中<b class='flag-5'>MAP</b>進程的數量怎么控制?

    mapreduce設置map個數_mapreduce設置map內存

    map階段讀取數據前,FileInputFormat會將輸入文件分割成split,split的個數決定了map的個數。
    發表于 01-02 14:26 ?1.1w次閱讀
    mapreduce設置<b class='flag-5'>map</b>個數_mapreduce設置<b class='flag-5'>map</b>內存

    Java Map的幾種循環方式學習總結

    本文檔內容介紹了基于Java Map的幾種循環方式學習總結,供參考
    發表于 03-19 15:51 ?0次下載

    ESP8266和單片機最簡單的AT指令的使用程序免費下載

    本文檔的主要內容詳細介紹的是ESP8266和單片機最簡單的AT指令的使用程序免費下載。
    發表于 08-02 17:34 ?11次下載
    ESP8266和單片機最<b class='flag-5'>簡單</b>的AT<b class='flag-5'>指令</b>的使用程序免費下載

    什么是 map

    map 容器,又稱鍵值對容器,即該容器的底層是以紅黑樹變體實現的,是典型的關聯式容器。這意味著,map 容器中的元素可以分散存儲在內存空間里,而不是必須存儲在一整塊連續的內存空間中。跟任意其它類型容器一樣,它能夠存放各種類型的對象。
    的頭像 發表于 02-27 15:41 ?3174次閱讀

    ARM系列-WFI和WFE指令介紹

    今天來看兩個特殊的指令,WFI(Wait For Interrupt)和WFE(Wait For Event)。這兩條指令的語法非常簡單,不需要帶任何參數。
    發表于 05-29 17:47 ?4732次閱讀
    主站蜘蛛池模板: 开心六月婷婷 | 久久久久久全国免费观看 | 国产经典三级在线 | 亚洲综合色婷婷 | 欧美色a电影精品aaaa | 久久精品人人爽人人爽快 | 国产经典三级 | 狠狠躁夜夜躁人人爽天天段 | 欧美黄页网 | 天堂网最新版中文 | 欧美一级黄色片 | 精品国产免费一区二区 | 丁香六月色婷婷 | 1000部禁片黄的免费看 | 午夜视频福利在线 | 色天使色婷婷丁香久久综合 | 欧美肥穴 | 人成电影免费观看在线 | 欧美色一级 | 天堂网www中文天堂在线 | 国产成在线人视频免费视频 | 在线小视频你懂的 | 天天插天天狠天天透 | 欧美人成一本免费观看视频 | 天天操天天弄 | 午夜免费伦费影视在线观看 | 国语自产免费精品视频一区二区 | 久久综合九色综合欧美播 | 日韩午夜精品 | 黄乱色伦| 深爱开心激情网 | 欧美日韩视频综合一区无弹窗 | 久久精品美女久久 | 日本在线观看高清不卡免v 日本在线观看永久免费网站 | 乱小说录目伦200篇将曲勒 | 国产美女视频一区二区三区 | 国产图片综合 | 亚洲一区二区三区四区五区六区 | 免费看很黄很色裸乳视频 | 欧美久久综合 | 在线 你懂 |