Nginx 如何通过openresty中的_lua*更改body_filter_中的内容长度

Nginx 如何通过openresty中的_lua*更改body_filter_中的内容长度,nginx,openresty,Nginx,Openresty,我使用openresty作为代理服务器,这可能会改变上游的响应。指令头\u filter\u by \u lua*在主体\u filter\u by \u lua*之前执行。但我用lua*更改了body\u filter\u中的内容长度,当时已经发送了标题 那么,当来自上游的响应在body_filter_中被_lua*更改时,如何设置正确的内容长度呢 谢谢大家! 来自: 当Lua代码可能更改响应正文的长度时,需要始终清除标题过滤器中的内容长度响应标题(如果有),以强制流式输出,如中所示 loc

我使用openresty作为代理服务器,这可能会改变上游的响应。指令头\u filter\u by \u lua*在主体\u filter\u by \u lua*之前执行。但我用lua*更改了body\u filter\u中的内容长度,当时已经发送了标题

那么,当来自上游的响应在body_filter_中被_lua*更改时,如何设置正确的内容长度呢

谢谢大家!

来自:

当Lua代码可能更改响应正文的长度时,需要始终清除标题过滤器中的内容长度响应标题(如果有),以强制流式输出,如中所示

 location /foo {
     # fastcgi_pass/proxy_pass/...

     header_filter_by_lua_block { ngx.header.content_length = nil }
     body_filter_by_lua 'ngx.arg[1] = string.len(ngx.arg[1]) .. "\\n"';
 }

我希望nginx会在这种情况下使用(没有测试)

谢谢,它可以工作。nginx在清除标题过滤器中的内容长度响应标题(如果有的话)后,会设置分块传输编码。