【问题标题】:Use NGINX to replace body from proxy_pass使用 NGINX 从 proxy_pass 替换 body
【发布时间】:2018-04-09 17:35:34
【问题描述】:

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

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

我最初没有ngx.arg[2] = true 的行,但我会取回身体两次(这是否意味着我要替换的身体有 2 个块?)。我在ngx.arg[2] = true 行中添加了,现在请求的输出看起来不错。当我部署nginx 文件时,该服务对于一些请求看起来不错,然后nginx 请求开始挂起。更换响应主体是正确/最佳实践吗?我应该怎么做?

【问题讨论】:

    标签: nginx openresty lua-ngx-module


    【解决方案1】:

    body_filter_by_lua_block内:

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

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

    这就是你看到你的字符串两次的原因。

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

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

    PS:如果您更改正文,请不要忘记包含header_filter_by_lua_block { ngx.header.content_length = nil }

    还有一些压缩内容的技巧。

    【讨论】:

      猜你喜欢
      • 2012-10-02
      • 2023-03-12
      • 1970-01-01
      • 2021-02-13
      • 2016-04-12
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多