nginx 根據IP 進行灰度發佈

灰度發佈,簡單來講,就是根據各類條件,讓一部分用戶使用舊版本,另外一部分用戶使用新版本。html


nginx 的語法自己能夠看做是一門小型的編程語言,經過簡單的編程,能夠輕鬆實現基於IP的灰度發佈。nginx


需求:搭建準生產環境,供開發人員/運維在線上作最後的調整。若是OK,直接用rsync推送至生產環境。
web


條件:辦公室網絡出口有固定IP
編程


解決辦法:bash

nginx 負載均衡器判斷客戶端IP地址,網絡

若是是辦公室IP,則反向代理到準生產環境;負載均衡

若是不是,則反向代理到生產環境。運維



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
upstream prod {
     server 192.168.1.10;
     server 192.168.1.11;
}
upstream pre-prod {
     server 192.168.1.100;
}
server {
     listen 80;
     access_log  /var/log/nginx/access .log main;
     set  $web_backend prod;
     if  ($remote_addr ~  "123.123.123.123" ) {
         set  $web_backend pre-prod;
     }
     location / {
         proxy_pass http: // $web_backend;
         include proxy.conf;
     }
}

同理,也能夠根據不一樣的IP,設置不一樣的網站根目錄,達到相同的目的。編程語言


1
2
3
4
5
6
7
8
9
10
11
server {
     listen 80;
     access_log  /var/log/nginx/access .log main;
     set  $rootdir  "/var/www/html" ;
     if  ($remote_addr ~  "123.123.123.123" ) {
         set  $rootdir  "/var/www/test" ;
     }
     location / {
         root $rootdir;
     }
}



同理,還能夠利用geoip作基於地理位置的灰度發佈,不詳細介紹。ide


注: set 命令依賴rewrite 模塊。


本文出自 「專一Linux 運維」 博客,請務必保留此出處http://purplegrape.blog.51cto.com/1330104/1403123

相關文章
相關標籤/搜索