是否可以合并多个响应并在NGINX中发送一个响应

时间:2017-09-17 18:28:24

标签: nginx lua load-balancing reverse-proxy openresty

我在一台虚拟机上运行Nginx / openresty和其他一些服务。基本上,VM接受Openresty上的请求,然后openresty将请求转发给适当的服务。例如以下请求分别转发给ServiceA,ServiceB和ServiceC。它工作正常。

现在我需要公开一个新的端点,它可以从所有服务A,B和C获得响应,然后返回一个合并的响应。

我不能在我的位置使用多个proxy_pass,有人可以建议我如何实现这一点?例如

http://server:80/services/refALL - >返回A,B和C服务的综合响应。

1 个答案:

答案 0 :(得分:1)

你可以像下面这样做。基本上,您从其他服务捕获响应,然后将它们组合起来

location /services/refALL {
   content_by_lua_block {
      local respA = ngx.location.capture("/services/refA")
      local respB = ngx.location.capture("/services/refB")
      local respC = ngx.location.capture("/services/refC")

      ngx.say(respA.body .. respB.body .. respC.body)
   }
}