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

NGINX基于cookie針對同一域名進行分流轉(zhuǎn)發(fā)

 更新時間:2025年07月13日 11:58:16   作者:遇見火星  
本文介紹了利用NGINX基于cookie進行多環(huán)境分流的方法,通過在Docker中部署兩個后端NGINX容器,并在前端NGINX配置中設置map規(guī)則,根據(jù)cookie值將請求分發(fā)到不同后端,感興趣的可以了解一下

最新了解到的姿勢,結(jié)合著新接觸 Mac 電腦,第一次做實驗,學習之后,特別記錄一下。

1,說明

很多時候,測試環(huán)境可能會有好多套環(huán)境,這個時候,如果每套都配置一個對應的域名,會非常麻煩,但是很多時候針對這個問題似乎又沒有特別好的方案,新公司新氣象,學到新的思路是在 NGINX 層面基于 cookie 來進行不同環(huán)境的分流轉(zhuǎn)發(fā),今天就來做一下這個實驗。

2,環(huán)境準備

因為在新環(huán)境,還沒有個人自用的測試服務器,Mac 當中做實驗又不習慣,于是只能通過 docker 來進行了。

所以需要先安裝 docker 環(huán)境,這個就不在這里贅述了。

那么,docker 環(huán)境準備完畢之后,就可以開始實驗了,所謂,docker 在手,天下我有。

3,思路說明

首先跑兩個 NGINX 的容器,訪問之后會返回不同的結(jié)果,然后前端再添加一層 NGINX,代理所有的外部請求,根據(jù) cookie 的不同,分發(fā)到不同的后端容器去。

4,開始操作

1,先啟兩個后端容器

準備工作:

$ mkdir -p /Users/liqilong/docker/nginx
$ cd /Users/liqilong/docker/nginx
$ mkdir  test1 test2
$ echo test1 > test1/index.html
$ echo test2 > test2/index.html

啟動容器:

$ docker pull daocloud.io/library/nginx:1.15.9-alpine-perl
$ docker run --name test1 -v /Users/liqilong/docker/nginx/test1:/usr/share/nginx/html:ro -d -p 8080:80  daocloud.io/library/nginx:1.15.9-alpine-perl
$ docker run --name test2 -v /Users/liqilong/docker/nginx/test2:/usr/share/nginx/html:ro -d -p 8081:80  daocloud.io/library/nginx:1.15.9-alpine-perl

訪問驗證:

$ ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 18:65:90:cc:52:a5
    inet6 fe80::1cf4:9734:2fa8:8234%en0 prefixlen 64 secured scopeid 0x5
    inet 172.16.29.170 netmask 0xfffffc00 broadcast 172.16.31.255
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active
$ curl 172.16.29.170:8080
test1
$ curl 172.16.29.170:8081
test2

2,再啟動一個前端 NGINX

因為要做一些相對的配置工作,我這里就用了自己配置的 centos 鏡像來做了,事實上仍舊可以利用剛剛那個 NGINX 鏡像來做接下來的實驗。

$ docker pull registry.cn-hangzhou.aliyuncs.com/eryajf/centos:7.4
$ docker run -itd --name eryajf registry.cn-hangzhou.aliyuncs.com/eryajf/centos:7.4

接下來的操作就是進入此容器內(nèi)部進行了。

$ docker exec -it eryajf sh
sh-4.2# yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
sh-4.2# yum -y install nginx

添加如下 NGINX 配置:

cat >> /etc/nginx/conf.d/test.conf << EOF
upstream test01 {       #此處可以單獨寫,也可以寫在下邊map的內(nèi)容中
    server 172.16.29.170:8080 weight=1 max_fails=1 fail_timeout=30s;
}
upstream test02 {
    server 172.16.29.170:8081 weight=1 max_fails=1 fail_timeout=30s;
}
upstream root {
    server 172.16.29.170:8080 weight=1 max_fails=1 fail_timeout=30s;
}
map $COOKIE_testenv $group {    #$COOKIE_testenv的前半部分$COOKIE_是固定格式,后邊的testenv則是cookie的key,$group是別名
    test1 test01;   #表示cookie的value=test1,則轉(zhuǎn)發(fā)給test1
    test2 test02;
    default root;
}
server {
    listen 81;
    server_name localhost;
    access_log  logs/access_log;
    error_log   logs/error_log;
    location / {
        proxy_pass http://$group$request_uri;   #注意此處url的拼接
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}
EOF

然后啟動 NGINX:

nginx -t
nginx

3,訪問測試

這個時候可以通過命令行來模擬請求,然后查看效果。

sh-4.2# curl localhost:81
test1
sh-4.2# curl localhost:81 --cookie "testenv=test1"
test1
sh-4.2# curl localhost:81 --cookie "testenv=test2"
test2

此處只要是有一個 cookie 名稱與內(nèi)容是符合 nginx 定義的規(guī)則的,那么如上規(guī)則就是成立的。

sh-4.2# curl localhost:81 --cookie "testenv=test1;user=root;pass=123"
test1
sh-4.2# curl localhost:81 --cookie "testenv=test2;user=root;pass=123"
test2

5,其他方面

另外除了上邊的比較固定的方式之外,還有比較靈活的控制方案,主要集中在 url 的匹配上。

1,匹配結(jié)尾關(guān)鍵字

需求就是匹配到 cookie 的指定結(jié)尾進行分流轉(zhuǎn)發(fā)。NGINX 配置如下:

map $COOKIE_testenv $group {
    ~*1$  172.16.29.170:8080;
    ~*2$  172.16.29.170:8081;
    default 172.16.29.170:8080;
}
server {
    listen 81;
    server_name localhost;
    access_log  logs/access_log;
    error_log   logs/error_log;
    location / {
        proxy_pass http://$group$request_uri;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

然后重新加載 NGINX 配置,請求一下驗證效果:

sh-4.2# curl localhost:81 --cookie "testenv=dfhg;user=root;pass=123"
test1
sh-4.2# curl localhost:81 --cookie "testenv=dfhg1;user=root;pass=123"
test1
sh-4.2# curl localhost:81 --cookie "testenv=dfhg2;user=root;pass=123"
test2

2,匹配開頭關(guān)鍵字

與上邊的道理是一致的,只不過配置內(nèi)容更改一下即可。

map $COOKIE_testenv $group {
    ~*^1  172.16.29.170:8080;
    ~*^2  172.16.29.170:8081;
    default 172.16.29.170:8080;
}
server {
    listen 81;
    server_name localhost;
    access_log  logs/access_log;
    error_log   logs/error_log;
    location / {
        proxy_pass http://$group$request_uri;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

然后請求一下,驗證一下效果:

sh-4.2# curl localhost:81 --cookie "testenv=dfhg;user=root;pass=123"
test1
sh-4.2# curl localhost:81 --cookie "testenv=1dfhg;user=root;pass=123"
test1
sh-4.2# curl localhost:81 --cookie "testenv=2dfhg;user=root;pass=123"
test2

3,匹配包含關(guān)鍵字

還有一種比較靈活的策略,就是只要包含指定的關(guān)鍵字標識,就往不同的后端進行分流轉(zhuǎn)發(fā),配置如下:

map $COOKIE_testenv $group {
    ~*.*eryajf1.*  172.16.29.170:8080;
    ~*.*eryajf2.*  172.16.29.170:8081;
    default 172.16.29.170:8080;
}
server {
    listen 81;
    server_name localhost;
    access_log  logs/access_log;
    error_log   logs/error_log;
    location / {
        proxy_pass http://$group$request_uri;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

然后請求一下,驗證一下效果:

sh-4.2# curl localhost:81 --cookie "testenv=A3fklj;user=root;pass=123"
test1
sh-4.2# curl localhost:81 --cookie "testenv=A3fkeryajf1lj;user=root;pass=123"
test1
sh-4.2# curl localhost:81 --cookie "testenv=A3fkeryajf2lj;user=root;pass=123"
test2

到此這篇關(guān)于NGINX基于cookie針對同一域名進行分流轉(zhuǎn)發(fā)的文章就介紹到這了,更多相關(guān)nginx cookie分流轉(zhuǎn)發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx使用命令安裝過程及說明

    Nginx使用命令安裝過程及說明

    本文概述安裝Nginx流程:解壓安裝包,安裝依賴,配置路徑為/usr/local/nginx/conf/nginx.conf,設置軟連接,啟動服務并檢查版本
    2025-07-07
  • Nginx搭建流媒體FLV視頻服務器配置示例

    Nginx搭建流媒體FLV視頻服務器配置示例

    這篇文章主要介紹了Nginx搭建流媒體FLV視頻服務器配置示例,,需要的朋友可以參考下
    2014-08-08
  • Linux安裝Nginx步驟詳解

    Linux安裝Nginx步驟詳解

    這篇文章主要介紹了Linux安裝Nginx步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • nginx部署前端dist包詳細圖文教程

    nginx部署前端dist包詳細圖文教程

    本文介紹了如何下載Nginx的穩(wěn)定版,并對下載后的壓縮包進行解壓和配置,涵蓋了將文件放入html目錄、修改nginx.conf配置文件以及啟動Nginx的步驟,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • Nginx搭建rtmp直播服務器實現(xiàn)代碼

    Nginx搭建rtmp直播服務器實現(xiàn)代碼

    這篇文章主要介紹了Nginx搭建rtmp直播服務器實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • nginx利用lua語言實現(xiàn)軟waf的示例代碼

    nginx利用lua語言實現(xiàn)軟waf的示例代碼

    這篇文章主要介紹了nginx利用lua語言實現(xiàn)軟waf,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • nginx 讓users有權(quán)限啟動的兩種方法

    nginx 讓users有權(quán)限啟動的兩種方法

    這篇文章主要介紹了nginx 讓users有權(quán)限啟動兩種方法的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Node、Yarn安裝、切換源實現(xiàn)方式

    Node、Yarn安裝、切換源實現(xiàn)方式

    本文介紹了如何下載和使用Node.js,包括Node版本下載、Npm和yarn的管理命令,以及如何切換鏡像源以提高下載速度
    2026-03-03
  • nginx下如何設置上傳文件大小

    nginx下如何設置上傳文件大小

    這篇文章主要介紹了nginx下如何設置上傳文件大小問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • nginx proxy_pass指令’/’使用注意事項

    nginx proxy_pass指令’/’使用注意事項

    這篇文章主要介紹了nginx代理配置完之后,nginx配置proxy_pass,需要注意轉(zhuǎn)發(fā)的路徑配置,需要的朋友可以參考下
    2015-02-02

最新評論

新巴尔虎右旗| 贵南县| 泌阳县| 景泰县| 旬邑县| 浦北县| 陆良县| 遂川县| 宜黄县| 农安县| 海口市| 武城县| 昌图县| 林州市| 临泽县| 开封县| 长沙市| 儋州市| 镇康县| 新巴尔虎右旗| 罗江县| 长阳| 北京市| 彭州市| 满城县| 儋州市| 兴仁县| 深圳市| 卢龙县| 衡南县| 普洱| 桐柏县| 湘阴县| 松原市| 前郭尔| 盐亭县| 穆棱市| 临湘市| 景德镇市| 黔南| 郸城县|