Nginx 灰度发布(基于cookies)

背景介绍

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

灰度做用

及早得到用户的意见反馈,完善产品功能,提高产品质量
让用户参与产品测试,增强与用户互动
下降产品升级所影响的用户范围前端

灰度策略

其实就是什么的请求应该路由到咱们的灰度版本(灰度机器)上来。这个每每是业务强相关的。好比对于API来讲,通常有以下几个需求:nginx

基于用户标识
基于用户IP bash

……服务器

灰度实现方式

灰度发布通常有三种方式 nginx+lua,nginx根据cookie分流,nginx 根据权重来分配
nginx+lua根据来访者ip地址区分,因为公司出口是一个ip地址,会出现访问网站要么都是老版,要么都是新版,采用这种方式并不适合
nginx 根据权重来分配,实现很简单,也能够尝试
nginx根据cookie分流,灰度发布基于用户才更合理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。
ide

相关文章
相关标签/搜索