1. 程式人生 > >nginx 根據IP 進行灰度發布

nginx 根據IP 進行灰度發布

nginx IP 灰度發布

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


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


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


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


解決辦法:

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

如果是辦公室IP,則反向代理到準生產環境;

如果不是,則反向代理到生產環境。



12345678910111213141516171819upstream 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,設置不同的網站根目錄,達到相同的目的。


1234567891011server { 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 進行灰度發布