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

Nginx 實(shí)現(xiàn)灰度發(fā)布的三種方法總結(jié)

 更新時(shí)間:2017年05月26日 14:46:20   投稿:lqh  
這篇文章主要介紹了Nginx 實(shí)現(xiàn)灰度發(fā)布的三種方法總結(jié)的相關(guān)資料,需要的朋友可以參考下

Nginx 實(shí)現(xiàn)灰度發(fā)布的三種方法總結(jié)

灰度發(fā)布的主要原理是訪問路由的控制,重點(diǎn)是保證每次訪問的是同一個(gè)節(jié)點(diǎn)。

方式一:通過調(diào)節(jié)負(fù)載均衡權(quán)重

        負(fù)載均衡 建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價(jià)有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。

        負(fù)載均衡,英文名稱為L(zhǎng)oad Balance,其意思就是分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。

簡(jiǎn)單配置如下:

http { 
  upstream cluster { 
    ip_hash; #如果你的系統(tǒng)中沒有使用第三方緩存管理工具 ,建議使用此方式
    server 192.168.1.210:80 weight=5; 
    server 192.168.1.211:80 weight=3; 
    server 192.168.1.212:80 weight=1; 
  } 
  
  server { 
    listen 80; 
 
  location / { 
  
  proxy_next_upstream   error timeout;
  proxy_redirect     off;
  proxy_set_header    Host $host;
  #proxy_set_header    X-Real-IP $remote_addr;
  proxy_set_header    X-Real-IP $http_x_forwarded_for;
  proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
  client_max_body_size  100m;
  client_body_buffer_size 256k;
  proxy_connect_timeout  180;
  proxy_send_timeout   180;
  proxy_read_timeout   180;
  proxy_buffer_size    8k;
  proxy_buffers      8 64k;
  proxy_busy_buffers_size 128k;
  proxy_temp_file_write_size 128k;
  proxy_pass http://cluster; 
    } 
  } 
} 

這種方式灰度發(fā)布通過weight來實(shí)現(xiàn),但是這種方式只適合修改節(jié)點(diǎn)的行為,而且要求應(yīng)用都是一模一樣的,其實(shí)質(zhì)作用是,節(jié)點(diǎn)增加或刪除之后,對(duì)負(fù)載能力的調(diào)節(jié),最終目的是為了讓流量最終保持均衡。

方式二.使用nginx+lua實(shí)現(xiàn)web項(xiàng)目的灰度發(fā)布

location / {
 content_by_lua '
      myIP = ngx.req.get_headers()["X-Real-IP"]
      if myIP == nil then
        myIP = ngx.req.get_headers()["x_forwarded_for"]
      end
      if myIP == nil then
        myIP = ngx.var.remote_addr
      end
      if myIP == "公司出口IP" then
        ngx.exec("@client")
      else
        ngx.exec("@client_test")
      end
    ';
} 

location @client{
  proxy_next_upstream   error timeout;
  proxy_redirect     off;
  proxy_set_header    Host $host;
  #proxy_set_header    X-Real-IP $remote_addr;
  proxy_set_header    X-Real-IP $http_x_forwarded_for;
  proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
  client_max_body_size  100m;
  client_body_buffer_size 256k;
  proxy_connect_timeout  180;
  proxy_send_timeout   180;
  proxy_read_timeout   180;
  proxy_buffer_size    8k;
  proxy_buffers      8 64k;
  proxy_busy_buffers_size 128k;
  proxy_temp_file_write_size 128k;
  proxy_pass http://client;

}
location @client_test{
  proxy_next_upstream   error timeout;
  proxy_redirect     off;
  proxy_set_header    Host $host;
  #proxy_set_header    X-Real-IP $remote_addr;
  proxy_set_header    X-Real-IP $http_x_forwarded_for;
  proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
  client_max_body_size  100m;
  client_body_buffer_size 256k;
  proxy_connect_timeout  180;
  proxy_send_timeout   180;
  proxy_read_timeout   180;
  proxy_buffer_size    8k;
  proxy_buffers      8 64k;
  proxy_busy_buffers_size 128k;
  proxy_temp_file_write_size 128k;
  proxy_pass http://client_test;
} 

由于使用了nginx+lua模塊,這種方式適合很多場(chǎng)景,非常強(qiáng)大,但是問題是你可能需要學(xué)習(xí)很多l(xiāng)ua的語法。

 方式三.使用http頭信息判斷+權(quán)重(灰度值)

http請(qǐng)求傳輸過程中,會(huì)自動(dòng)帶上User-Agent,Host,Referer,Cookie等信息。我們只需要判斷ip地址段,用戶代理,Cookie中的信息等。我們這里以Cookie為例。

當(dāng)然,這里需要解決兩個(gè)問題:

①首次訪問靜態(tài)頁面可能不會(huì)產(chǎn)生cookie

②我們需要通過代碼動(dòng)態(tài)設(shè)置路由

③通過weight控制灰度值

我們可以通過一個(gè)例子來解決上述中的②與③的問題

upstream tts_V6 {
    server 192.168.3.81:5280 max_fails=1 fail_timeout=60;
}
upstream tts_V7 {
    server 192.168.3.81:5380 max_fails=1 fail_timeout=60;
}
upstream default {  #通過upstream default + weight節(jié)點(diǎn)控制權(quán)重
    server 192.168.3.81:5280 max_fails=1 fail_timeout=60 weight=5;
    server 192.168.3.81:5380 max_fails=1 fail_timeout=60 weight=1;
}
server {
    listen 80;
    server_name test.taotaosou.com;
    access_log logs/test.taotaosou.com.log main buffer=32k;
    #match cookie
    set $group "default";
    if ($http_cookie ~* "tts_version_id=tts1"){ #動(dòng)態(tài)控制路由
        set $group tts_V6;
    }
    if ($http_cookie ~* "tts_version_id=tts2"){
        set $group tts_V7;
    }
    location / {            
        proxy_pass http://$group;
        proxy_set_header  Host       $host;
        proxy_set_header  X-Real-IP    $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        index index.html index.htm;
    }
 }

對(duì)于問題①,我們可以在index頁面通過script來訪問動(dòng)態(tài)頁面:

<script src="https://test.taotaosou.com/cookieinfo.php" /><script>

此外,我們還要在cookieinfo.php中判斷和生成cookie

<?php

if(!session_id())
{
 session_start();
}
if(!isset($_COOKIE["tts_version_id"]))
{
 $cookieValue = $_SERVER['SERVER_PORT']==5280?"tts1":"tts2";
 setcookie("tts_version_id", $cookieValue, time()+3600, "/");
}
?>

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上的實(shí)現(xiàn)

    nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上的實(shí)現(xiàn)

    本文主要介紹了nginx將https協(xié)議反向代理到http協(xié)議請(qǐng)求上的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • Nginx代理Vue項(xiàng)目出現(xiàn)Invalid Host header問題及解決

    Nginx代理Vue項(xiàng)目出現(xiàn)Invalid Host header問題及解決

    在使用Nginx的upstream對(duì)Vue項(xiàng)目進(jìn)行負(fù)載均衡時(shí),如果代理地址無法訪問目標(biāo)地址且頁面報(bào)錯(cuò)InvalidHostheader(無效主機(jī)頭),可能是由于Vue項(xiàng)目的主機(jī)檢查配置導(dǎo)致的,解決方法是在Vue項(xiàng)目的webpack.dev.js文件中的devServer下添加disableHostCheck:true,跳過主機(jī)檢查
    2024-12-12
  • linux安裝nginx和前端部署vue項(xiàng)目全過程(實(shí)測(cè)react項(xiàng)目也可)

    linux安裝nginx和前端部署vue項(xiàng)目全過程(實(shí)測(cè)react項(xiàng)目也可)

    這篇文章主要介紹了如何將前端項(xiàng)目打包并部署到服務(wù)器上,包括使用nginx進(jìn)行配置和啟動(dòng)等步驟,文中通過代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • Nginx代理導(dǎo)致請(qǐng)求頭某些內(nèi)容丟失的問題解決

    Nginx代理導(dǎo)致請(qǐng)求頭某些內(nèi)容丟失的問題解決

    本文主要介紹了在使用NGINX代理時(shí)請(qǐng)求頭中的下劃線被自動(dòng)忽略的問題,通過兩種方法解決了這個(gè)問題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • nginx訪問控制的實(shí)現(xiàn)示例

    nginx訪問控制的實(shí)現(xiàn)示例

    這篇文章主要介紹了nginx訪問控制的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • nginx服務(wù)器實(shí)現(xiàn)上傳下載文件的實(shí)例代碼

    nginx服務(wù)器實(shí)現(xiàn)上傳下載文件的實(shí)例代碼

    這篇文章主要介紹了nginx服務(wù)器實(shí)現(xiàn)上傳下載文件的實(shí)例代碼,本文通過代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • nginx fair負(fù)載均衡方式使用詳解

    nginx fair負(fù)載均衡方式使用詳解

    本文主要介紹了nginx fair負(fù)載均衡方式使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 如何用Nginx解決前端跨域問題

    如何用Nginx解決前端跨域問題

    在開發(fā)靜態(tài)頁面時(shí),類似Vue的應(yīng)用,我們常會(huì)調(diào)用一些接口,這些接口極可能是跨域,這篇文章主要介紹了如何用Nginx解決前端跨域問題,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2019-01-01
  • linux服務(wù)器部署tomcat和Nginx的教程

    linux服務(wù)器部署tomcat和Nginx的教程

    這篇文章主要為大家詳細(xì)介紹了linux服務(wù)器部署tomcat和Nginx的教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • nginx搭建文件服務(wù)器的詳細(xì)過程

    nginx搭建文件服務(wù)器的詳細(xì)過程

    這篇文章主要介紹了nginx搭建文件服務(wù)器,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

从江县| 双江| 六盘水市| 濮阳市| 沙洋县| 资中县| 彰武县| 隆尧县| 梓潼县| 望江县| 耒阳市| 新民市| 桓台县| 嘉黎县| 荔波县| 乌苏市| 巴东县| 陇川县| 吉隆县| 神木县| 雅江县| 汝城县| 肥城市| 高雄市| 门头沟区| 罗江县| 扶沟县| 青神县| 抚州市| 翼城县| 专栏| 凉城县| 怀化市| 鄂托克前旗| 城固县| 钟祥市| 中西区| 同德县| 舞阳县| 达孜县| 英超|