nginx 根據IP 進行灰度發布
阿新 • • 發佈:2018-03-23
nginx IP 灰度發布灰度發布,簡單來說,就是根據各種條件,讓一部分用戶使用舊版本,另一部分用戶使用新版本。
nginx 的語法本身可以看作是一門小型的編程語言,通過簡單的編程,可以輕松實現基於IP的灰度發布。
需求:搭建準生產環境,供開發人員/運維在線上做最後的調整。如果OK,直接用rsync推送至生產環境。
條件:辦公室網絡出口有固定IP
解決辦法:
nginx 負載均衡器判斷客戶端IP地址,
如果是辦公室IP,則反向代理到準生產環境;
如果不是,則反向代理到生產環境。
12345678910111213141516171819 | 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,設置不同的網站根目錄,達到相同的目的。
1234567891011 | 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 模塊。
本文出自 “專註Linux 運維” 博客,請務必保留此出處http://purplegrape.blog.51cto.com/1330104/1403123
nginx 根據IP 進行灰度發布