nginx实现灰度发布
2018-11-22 本文已影响40人
lockdreamer
整体思路:
nginx收到session带来的cookies_wltx_version变量,然后在map.conf中对变量进行重新赋值;再通过location里面的proxy_pass将变量传给upstream,最后,upstream根据变量的值匹配到对应的节点,实现灰度发布。
具体配置文件如下:
1、nginx.conf
time_local 访问时间
remote_addr 请求发起地址
upstream_addr upstream代理地址
![](https://img.haomeiwen.com/i14257804/6cc96662ddffb314.png)
坑1:由于对nginx不理解,导致问题一直定位不到原因。感谢强哥和君虎的技术支持。
nginx中$cookies_cmos_vesion参数,$cookies_是前缀,只有加了这个前缀才能调取cookies传来的参数。实际参数应该是cmos_vesion。
![](https://img.haomeiwen.com/i14257804/6bb8a99ea17a89be.png)
2、map.conf
~* 开头表示不区分大小写的正则匹配
![](https://img.haomeiwen.com/i14257804/e7631b6f4499c65a.png)
坑2:map.conf中匹配问题
参数:ebmp:99
匹配规则: ~*ebmp:99
3、upstream
![](https://img.haomeiwen.com/i14257804/ed27540065b5c21c.png)
4、location
![](https://img.haomeiwen.com/i14257804/19e33bf66a3803c1.png)