nginx 根據IP 進行灰度釋出

ringoo_ming發表於2017-11-13

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


nginx 的語法本身可以看作是一門小型的程式語言,通過簡單的程式設計,可以輕鬆實現基於IP的灰度釋出。


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


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


解決辦法:

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

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

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



  1. upstream prod {
  2.     server 192.168.1.10;
  3.     server 192.168.1.11;
  4.     }
  5. upstream pre-prod {
  6.     server 192.168.1.100;
  7.     }
  8. server {
  9.     listen 80;
  10.     access_log /var/log/nginx/access.log main;
  11.       set $web_backend prod;
  12.         if ($remote_addr ~ "123.123.123.123") {
  13.         set $web_backend pre-prod;
  14.       }
  15. location / {
  16.     proxy_pass http://$web_backend;
  17.     include proxy.conf;
  18.       }
  19. }
同理,也可以根據不同的IP,設定不同的網站根目錄,達到相同的目的。


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

本文出自 “運維部落格” 部落格,請務必保留此出處http://purplegrape.blog.51cto.com/1330104/1403123

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31442725/viewspace-2147194/,如需轉載,請註明出處,否則將追究法律責任。

相關文章