欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx中map指令的具體使用

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

map指令簡單介紹

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

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

語法: 只能配置在http塊內(nèi)
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: 關(guān)鍵字,開辟一段內(nèi)存空間聲明一個map

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

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

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

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

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

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

map指令的實踐使用

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

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

如何實現(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;
    }

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

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

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

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

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

跨域訪問一般情況下我們都會直接設(shè)置 * 允許所有跨域訪問。但是難免會有一些對安全性要求較高的業(yè)務(wù)不允許這樣,那么對于域名比較多的安全跨域配置,也可以使用map來實現(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)然還有很多場景都可以用到, 無法一一列舉, 自己能夠根據(jù)需求和場景靈活運用是最好的。

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

相關(guān)文章

  • 服務(wù)器報錯nginx?502?Bad?Gateway的原因及如何解決詳解

    服務(wù)器報錯nginx?502?Bad?Gateway的原因及如何解決詳解

    項目啟動時莫名其妙網(wǎng)站訪問不了,502 Bad Gateway,下面這篇文章主要給大家介紹了關(guān)于服務(wù)器報錯nginx?502?Bad?Gateway的原因及如何解決的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 服務(wù)器nginx權(quán)限被拒絕解決案例

    服務(wù)器nginx權(quán)限被拒絕解決案例

    這篇文章主要為大家介紹了服務(wù)器nginx權(quán)限被拒絕解決案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 在Nginx服務(wù)器中配置mod_proxy反向代理的方法

    在Nginx服務(wù)器中配置mod_proxy反向代理的方法

    這篇文章主要介紹了在Nginx服務(wù)器中配置mod_proxy反向代理的方法,Nginx服務(wù)器最大的特點就是作高性能反向代理使用,需要的朋友可以參考下
    2015-07-07
  • 配置nginx轉(zhuǎn)發(fā)內(nèi)網(wǎng)請求到外網(wǎng)的實現(xiàn)示例

    配置nginx轉(zhuǎn)發(fā)內(nèi)網(wǎng)請求到外網(wǎng)的實現(xiàn)示例

    本文主要介紹了配置nginx轉(zhuǎn)發(fā)內(nèi)網(wǎng)請求到外網(wǎng)的實現(xiàn)示例,通過nginx配置代理實現(xiàn)內(nèi)網(wǎng)對外網(wǎng)接口數(shù)據(jù)的獲取,涉及nginx安裝、配置SSL、日志設(shè)置和錯誤排查,感興趣的可以了解一下
    2024-10-10
  • 如何配置nginx成功代理websocket

    如何配置nginx成功代理websocket

    配置Nginx作為WebSocket代理是一種常見的設(shè)置,以便在Nginx服務(wù)器上實現(xiàn)WebSocket連接的轉(zhuǎn)發(fā)和負(fù)載均衡,這篇文章主要介紹了配置nginx以成功代理websocket,需要的朋友可以參考下
    2024-02-02
  • 本地HTTPS環(huán)境搭建的完整步驟記錄

    本地HTTPS環(huán)境搭建的完整步驟記錄

    這篇文章主要給大家介紹了關(guān)于本地HTTPS環(huán)境搭建的相關(guān)資料,文中通過示例代碼將實現(xiàn)的步驟一步步介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • nginx編譯安裝出現(xiàn)的常見錯誤及解決方法

    nginx編譯安裝出現(xiàn)的常見錯誤及解決方法

    這篇文章給大家介紹了nginx在編譯安裝過程中容易出現(xiàn)的常見錯誤以及解決方法,文中有詳細(xì)的代碼講解,對我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-08-08
  • nginx 內(nèi)置變量詳解及隔離進(jìn)行簡單的攔截

    nginx 內(nèi)置變量詳解及隔離進(jìn)行簡單的攔截

    這篇文章主要介紹了nginx 隔離進(jìn)行簡單的攔截詳解的相關(guān)資料,這里對nginx內(nèi)置變量進(jìn)行了簡單的介紹并對隔離攔截進(jìn)行了詳解, 需要的朋友可以參考下
    2016-12-12
  • 一次說清Nginx反向代理及參數(shù)配置

    一次說清Nginx反向代理及參數(shù)配置

    我們在配置服務(wù)時常常會用到Nginx來設(shè)置反向代理,雖然常用,但是我們真的了解各個參數(shù)的意思嗎,本文就給大家一次說清Nginx反向代理及參數(shù)配置,需要的朋友可以參考下
    2023-05-05
  • Ubuntu上安裝Nginx服務(wù)器程序及簡單的環(huán)境配置小結(jié)

    Ubuntu上安裝Nginx服務(wù)器程序及簡單的環(huán)境配置小結(jié)

    Nginx是一款高性能的異步非阻塞服務(wù)器應(yīng)用程序,人氣相當(dāng)高,這里我們就來看一下在Ubuntu上安裝Nginx服務(wù)器程序及簡單的環(huán)境配置小結(jié):
    2016-07-07

最新評論