可以用此做灰度,最简单的办法就是在rewrite_by_lua阶段写Lua代码,代码例子可以如下:
location / {
set $upstream_name '';
rewrite_by_lua_block {
local json_data = 获取你的参数值
ngx.var.upstream_nam = 根据你的参数值得出你的upstream_name(json_data) //可以从shdict 甚至是从redis等外部储存介质中用cosocket来获取(如果对性能要求不高的话)
}
proxy_pass http://$upstream_name;
}
当然也可以在balance_by_lua阶段做:https://github.com/openresty/lua-nginx-module#balancer_by_lua_block
另外 这种做法在openresty/ngx_lua中已经很常见,也有很成熟的方案了。
在 2017年12月18日星期一 UTC+8上午10:24:35,Li YQ写道:
需要根据post中json中的某键值内容,分发到不通upstream?
各位看看是否能提供相关范例,google过但是没有找到相关解决方法。