我有一个数据库查询工具,它返回的数据采用 Transfer-encoding: chunked。我想使用现有的 varnish 基础架构来缓存来自此工具的响应,但 varnish 拒绝缓存分块文档。在 varnish 和工具本身之间,有 nginx 代理,但我找不到任何方法让它取消分块响应。是否有针对 nginx 或任何其他类似代理的解决方案,基本上可以执行以下操作:
- 从后端获取响应,如果响应被分块,则将其缓冲到预设大小
- 如果响应在达到限制之前结束,则将其重新打包为单个对象而不进行分块,并使用适当的 Content-Length 发送出去
- 如果响应没有结束,则将累积的数据发送出去(以原始块或作为一个大块),并从该点继续将其流式传输出去。