以下是一个可行的解决方案
nginx
-
创造
conf.d/balancer.conf
-
将代码放入其中(见下文)
-
docker run -p8080:8080 -v ~/your_path/conf.d:/etc/nginx/conf.d openresty/openresty:alpine
-
使用
curl
玩弄它
平衡器。形态:
map $cookie_is_special_user $upstream {
default http://example.com;
~^1$ http://scooterlabs.com/echo;
}
server {
listen 8080;
resolver 8.8.8.8;
location / {
proxy_pass $upstream;
}
}
测试
curl --cookie "is_special_user=1" http://localhost:8080
它将返回scooterlabs的内容。com正在转储收到的请求
curl http://localhost:8080
生成示例的内容。通用域名格式
解释
-
这样做的目的是为您视为的用户设置一个特殊的cookie
特殊的
在他们像往常一样获得授权后通过后端应用程序
-
当然,只有当两个应用程序版本都在同一个域上提供,以便两个版本都能看到cookie时,它才会起作用
-
之后,根据cookie值将它们平衡到所需的服务器
-
通过调整nginx配置文件,可以轻松禁用此类路由
-
使用这种方法,您可以想出更复杂的场景,例如在1-10范围内设置随机cookie值,然后逐渐切换一些
特殊的
配置文件中的用户,即从值为1的用户开始,然后是值为1-2的用户,以此类推