前言

该文章旨在了解相关方案,并非最佳解法~
由于项目的灰度偏业务,发布平台的灰度方案并不能支持,于是便考虑在网关层(类似 Nginx)上考虑使用 cookie 判断来分流灰度用户。
出 Nginx 方案是方便本地调试~

Nginx.conf

$COOKIE_gray gray 为 cookie key
true,false 为命中逻辑,可为正则

http {
include mime.types;
default_type application/octet-stream;


map $COOKIE_gray $group {
true apache001;
false apache002;
default apache002;
}

upstream apache001 {
server 192.168.1.101:3001 weight=1 max_fails=1 fail_timeout=30s;
}

upstream apache002 {
server 192.168.1.102:8000 weight=1 max_fails=1 fail_timeout=30s;
}


sendfile on;

keepalive_timeout 65;


server {
listen 3000;
server_name localhost;

location / {
proxy_pass http://$group;
}
}
include servers/*;
}