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

2024-01-03

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

  • http://服务器:80/services/refA http://server:80/services/refA
  • http://服务器:80/services/refB http://server:80/services/refB
  • http://服务器:80/services/refC http://server:80/services/refC

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

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

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


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

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)
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 NGINX 中合并多个响应并发送一个响应 的相关文章

随机推荐