1

我是新手openresty/nginx,正在尝试用以下代码替换来自先前调用 proxy_pass 的正文:

body_filter_by_lua_block {
  ngx.arg[1] = '{"count"' .. ":2}'
  ngx.arg[2] = true
}

我原本没有ngx.arg[2] = true. 我在该ngx.arg[2] = true行中添加了,现在请求的输出看起来不错。当我部署nginx文件时,该服务对于一些请求看起来不错,然后nginx请求开始挂起。更换响应主体是正确/最佳实践吗?我应该怎么做?

4

1 回答 1

2

body_filter_by_lua_block

ngx.arg[1]是响应体的当前块。

ngx.arg[2]是文件结束标志。我经常看到这个标志在单独的body_filter_by_lua_block调用中设置,when ngx.arg[1]is nil

这就是为什么你看到你的字符串两次。

上面的 EOF 标志具有读/写访问权限,因此如果将其设置为true它意味着只需丢弃任何剩余的块数据。

更改正文内容对我来说效果很好,甚至做了一些性能测试,使用它时从来没有看到挂起。

header_filter_by_lua_block { ngx.header.content_length = nil }PS:如果你改变身体,别忘了包括。

压缩内容也可能有一些技巧。

于 2018-04-10T12:34:13.110 回答