nginx 根據IP 進行灰度發布


灰度發布,簡單來說,就是根據各種條件,讓一部分用戶使用舊版本,另一部分用戶使用新版本。

 

nginx 的語法本身可以看作是一門小型的編程語言,通過簡單的編程,可以輕松實現基於IP的灰度發布。

 

需求:搭建准生產環境,供開發人員/運維在線上做最后的調整。如果OK,直接用rsync推送至生產環境。

 

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

 

解決辦法:

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做基於地理位置的灰度發布,不詳細介紹。

 

注: set 命令依賴rewrite 模塊。

 

出處http://purplegrape.blog.51cto.com/1330104/1403123


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM