我使用NGINX作为反向代理,通过动态映射将请求转发到正确的后端。
这是我的地图指令
map $arg_action $backend {
"~^nginx/.*" nginx-web;
"~^httpd/.*" httpd-web;
}
我通过以下方式将流量代理到正确的上游:
location /data {
proxy_redirect off;
proxy_bypass http://$backend/$arg_action;
}
我触发的 API 是:
/data?action=httpd/v1/CompareAnimals?animal=cat&bird=high
httpd 服务获取以下 API:
httpd/v1/CompareAnimals?animal=cat, NGINX will not bypass anything after "&" character
如何让 httpd 服务在触发时获取完整的 API?比如:
httpd/v1/CompareAnimals?animal=cat&bird=high
而且不仅
httpd/v1/CompareAnimals?animal=cat
似乎你应该使用
proxy_pass
而不是 proxy_bypass
,只需添加 NGINX 提供的 $args
变量
location /data {
proxy_redirect off;
proxy_pass http://$backend/$arg_action$args;
}