nginx基于cookie灰度发布

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

前端nginx服务器监听端口80,需要根据cookie转发,查询的cookie的键(key)为test(该键由开发负责增加),如果该cookie值(value)为1则转发到web1,不为2则转发到web2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
upstream web1 {
server 192.168.56.102 weight=1 max_fails=3 fail_timeout=3;
}
upstream web2 {
server 192.168.56.103 weight=1 max_fails=3 fail_timeout=3;
}
server ....
location ~ / {
set $coo "1";
if ($http_cookie ~* "test=1") {
set $coo web2;
}
if ($http_cookie !~* "test=1") {
set $coo web1;
}
proxy_pass http://$coo;
include proxy.conf;
}
}

php设置cookie方法

1
2
3
<?php
$value = '1';
setcookie("test",$value);

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器