现在有需求是针对post参数version的值进行不同upstream分流,之前百度一些人的解决方案,都不能解决.
方案1:
set $version '';
rewrite_by_lua '
local request_method = ngx.var.request_method
if request_method == "POST" then
ngx.req.read_body()
local value = ngx.req.get_post_args()["version"] or 0
ngx.var.version = value
end;';
if ($version = '2.0'){
proxy_pass http://Server1;
}
if ($version = '3.0'){
proxy_pass http://Server2;
}
问题:但是发现if要比rewrite_by_lua先执行,根本获取不到version的值,通过echo命令输出$version,发现rewrite_by_lua确实能取到值,但是比if执行晚。所以这种方案不行
方案2:
后面编译nginx增加--add-module=../form-input-nginx-module/模块,通过set_form_input 获取post参数
set_form_input $version;
if ($version = '2.0'){
proxy_pass http://Server1;
}
if ($version = '3.0'){
proxy_pass http://Server2;
}
问题:一样获取不到对应的post参数值
请问有什么好的方案吗?
有木有好方法啊