Nginx 灰度发布(基于cookies)

Nginx 灰度发布(基于cookies)
背景介绍

灰度发布,主要任务是从产品用户群中按照一定策略选取部分用户,让他们先行体验功能或版本。

灰度作用

及早获得用户的意见反馈,完善产品功能,提升产品质量
让用户参与产品测试,加强与用户互动
降低产品升级影响的用户范围

灰度策略

其实就是什么的请求应该路由到我们的灰度版本(灰度机器)上来。这个往往是业务强相关的。比如对于API来说,一般有如下几个需求:

基于用户标识
基于用户IP

……

灰度实现方式

灰度发布一般有三种方式 nginx+lua,nginx根据cookie分流,nginx 根据权重来分配
nginx+lua根据来访者ip地址区分,由于公司出口是一个ip地址,会出现访问网站要么都是老版,要么都是新版,采用这种方式并不适合
nginx 根据权重来分配,实现很简单,也可以尝试
nginx根据cookie分流,灰度发布基于用户才更合理

灰度实施

nginx基于用户标识的灰度发布才更合理

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

upstream A {

server 127.0.0.1:8360;

}

upstream B {

server 127.0.0.1:8361;

}

server {

listen 80;

server_name localhost;

set $group A;

if ($http_cookie ~* "version_id=new" ){

set $group B;

}

location / {

proxy_pass http: // $group;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

index index.html index.htm;

}

}

前端nginx服务器监听端口80,需要根据cookie转发,查询的cookie的键(key)为"version_id(该键由开发负责增加),如果该cookie值(value)为new则转发到B,其他则转发到A。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部