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

Nginx中map指令的具體使用

 更新時(shí)間:2024年07月15日 09:48:26   作者:白--茶  
Nginx的map指令是一個(gè)強(qiáng)大的工具,用于根據(jù)變量的值來(lái)設(shè)置另一個(gè)變量的值,本文就來(lái)介紹一下Nginx中map指令的具體使用,感興趣的可以了解一下

map指令簡(jiǎn)單介紹

當(dāng)然這里寫(xiě)的都是官方文檔是已經(jīng)寫(xiě)過(guò)的,我簡(jiǎn)單抄一下哈。

map指令來(lái)自于 ngx_http_map_module 模塊,提供的核心能力是 基于一個(gè)變量創(chuàng)建一個(gè)新變量,大概是這意思。

語(yǔ)法: 只能配置在http塊內(nèi)
map string $variable {...}

直接看這個(gè)語(yǔ)法好像看不出來(lái)它能干什么,所以官方文檔上給了幾個(gè)例子:

map $http_host $name {
    hostnames;

    default       0;

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

解析一下上面??這個(gè)例子的意思??:

map: 關(guān)鍵字,開(kāi)辟一段內(nèi)存空間聲明一個(gè)map

  • $http_host: 獲取host請(qǐng)求頭:eg: www.baidu.com
  • $name: 新變量,具體取值是什么取決于結(jié)構(gòu)體內(nèi)的映射關(guān)系

結(jié)構(gòu)體內(nèi)的數(shù)據(jù)解析:

hostnames:官方文檔給出的解釋是:允許用前綴或者后綴掩碼指定域名作為源變量值。這個(gè)參數(shù)必須寫(xiě)在值映射列表的最前面。

讀都能讀的懂,字也都認(rèn)識(shí),但是怎么感覺(jué)好像還是不太懂呢,又沒(méi)有同感?于是我測(cè)試了一下,其實(shí)就是你想用下面那種泛域名來(lái)匹配host的話(huà)就加一下這個(gè)參數(shù), 否則是達(dá)不到預(yù)期效果的。

default 0; :匹配不到符合條件的數(shù)據(jù)時(shí) 則$name 這個(gè)變量就取默認(rèn)值 0

知道了這之后我能用它來(lái)做什么呢?看實(shí)際應(yīng)用的例子

map指令的實(shí)踐使用

1. 基于cookie做多環(huán)境分流

一般中大型公司都會(huì)有多套測(cè)試環(huán)境,對(duì)于多環(huán)境的訪(fǎng)問(wèn)可能最容易想到的就是對(duì)應(yīng)多個(gè)域名,這方法當(dāng)然可以,但是不優(yōu)雅,維護(hù)多個(gè)域名太累。為了偷懶,我們用了一個(gè)域名,使用不同的cookie來(lái)轉(zhuǎn)發(fā)相應(yīng)的流量到相應(yīng)的環(huán)境。

如何實(shí)現(xiàn)?

    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;
    }

    # 隨便寫(xiě)一個(gè)
    upstream upstream_test-14 {
        server 2.2.2.2:80;
    }

    # 局部實(shí)現(xiàn)寫(xiě)一下
    location / {
        pass_pass http://$cl_backend_map;
    }

    # 請(qǐng)求
    curl --cookie "cl_env_num=test-15" a.test.com/api/v1/hahaha

這不就實(shí)現(xiàn)了嘛,很方便哈。僅提供思路!當(dāng)然也可以使用其他變量來(lái)分流 UA|args ...

2. 做安全的多域名跨域訪(fǎng)問(wèn)

跨域訪(fǎng)問(wèn)一般情況下我們都會(huì)直接設(shè)置 * 允許所有跨域訪(fǎng)問(wèn)。但是難免會(huì)有一些對(duì)安全性要求較高的業(yè)務(wù)不允許這樣,那么對(duì)于域名比較多的安全跨域配置,也可以使用map來(lái)實(shí)現(xiàn)。

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;
        ...
    }
}

僅提供思路哈,具體情況可以再優(yōu)化

總結(jié)

當(dāng)然還有很多場(chǎng)景都可以用到, 無(wú)法一一列舉, 自己能夠根據(jù)需求和場(chǎng)景靈活運(yùn)用是最好的。

到此這篇關(guān)于Nginx中map指令的具體使用的文章就介紹到這了,更多相關(guān)Nginx map指令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx配置缺少導(dǎo)致CSS不起作用的問(wèn)題解決

    Nginx配置缺少導(dǎo)致CSS不起作用的問(wèn)題解決

    本文將分享一個(gè)常見(jiàn)的問(wèn)題Nginx配置缺少導(dǎo)致的CSS不起作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • nginx目錄路徑重定向的方法

    nginx目錄路徑重定向的方法

    這篇文章主要介紹了nginx目錄路徑重定向的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • WordPress中開(kāi)啟多站點(diǎn)支持及Nginx的重寫(xiě)規(guī)則配置

    WordPress中開(kāi)啟多站點(diǎn)支持及Nginx的重寫(xiě)規(guī)則配置

    這篇文章主要介紹了WordPress中開(kāi)啟多站點(diǎn)支持及Nginx的重寫(xiě)規(guī)則配置方法,在同一個(gè)WordPress軟件中開(kāi)啟的多個(gè)站點(diǎn)如果需要綁定不同域名的話(huà)也可以使用WordPress MU Domain Mapping插件,需要的朋友可以參考下
    2016-03-03
  • nginx正向代理與反向代理詳解

    nginx正向代理與反向代理詳解

    本文給大家分享的是nginx實(shí)現(xiàn)正向代理和反向代理的具體方法配置以及不同的實(shí)例情況,非常的詳細(xì),希望大家能夠喜歡
    2020-03-03
  • Linux平臺(tái)通過(guò)nginx和vsftpd構(gòu)建圖片服務(wù)器

    Linux平臺(tái)通過(guò)nginx和vsftpd構(gòu)建圖片服務(wù)器

    這篇文章主要介紹了Linux平臺(tái)通過(guò)nginx和vsftpd構(gòu)建圖片服務(wù)器,需要的朋友可以參考下
    2017-05-05
  • nginx 偽靜態(tài)Rewrite正則資源匯總

    nginx 偽靜態(tài)Rewrite正則資源匯總

    本文給大家匯總介紹了nginx中使用rewrite偽靜態(tài)正則表達(dá)式的資源,非常的全面詳細(xì),有需要的小伙伴可以參考下
    2016-08-08
  • 探究Nginx中reload流程的原理真相

    探究Nginx中reload流程的原理真相

    這篇文章主要介紹了探究Nginx中reload流程的原理真相,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 如何在nginx中配置緩存靜態(tài)文件

    如何在nginx中配置緩存靜態(tài)文件

    本篇文章主要介紹了如何在 nginx 中緩存靜態(tài)文件配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • 解決SSE流被Nginx緩存的問(wèn)題

    解決SSE流被Nginx緩存的問(wèn)題

    如果你的服務(wù)使用了nginx網(wǎng)關(guān),可能會(huì)出現(xiàn)nginx緩沖sse流的問(wèn)題,導(dǎo)致的現(xiàn)象是,客戶(hù)端調(diào)用sse接口時(shí),流數(shù)據(jù)并不是一條條出現(xiàn)的,而是一口氣出現(xiàn)的,本文將給大家介紹如何解決SSE流被Nginx緩存的問(wèn)題,需要的朋友可以參考下
    2023-10-10
  • 用nginx搭建簡(jiǎn)單的文件下載服務(wù)器的方法

    用nginx搭建簡(jiǎn)單的文件下載服務(wù)器的方法

    本篇文章主要介紹了用nginx搭建簡(jiǎn)單的文件下載服務(wù)器的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01

最新評(píng)論

新乡市| 杭锦后旗| 平邑县| 清原| 冀州市| 安康市| 正阳县| 合川市| 浦县| 红桥区| 凤冈县| 南岸区| 武功县| 旺苍县| 诏安县| 饶河县| 南涧| 金门县| 泸定县| 法库县| 成武县| 阜康市| 隆尧县| 武义县| 巴彦淖尔市| 永泰县| 沧州市| 肇东市| 贵阳市| 靖远县| 芜湖县| 乌鲁木齐市| 澎湖县| 梁山县| 谷城县| 防城港市| 韩城市| 昭通市| 岚皋县| 洛隆县| 怀集县|