使用 Nginx Lua 记录响应主体

使用 Nginx Lua 记录响应主体

我有一个反向代理,我想用它来记录请求主体,目前看起来

log_format my_tracking'“$request”“$http_soapaction”“$http_content_type”“$request_body”';

它记录了所有内容,现在我想记录这些请求的响应主体,结果却困难得多。我一直在尝试使用 Lua 模块(我已将其编译到 Nginx 1.3.14 中),但我找不到任何有关如何执行此操作的示例,我确实在扩展我的技术能力,因此任何帮助都将不胜感激。

谢谢,将编辑回复引用报告

答案1

确实,在 body_filter 中设置变量然后将其传递到日志文件不起作用。我检查了这个配置,它起作用了,但不幸的是 nginx 将数据记录到 error.log 中:

 error_log  logs/error.log  info;

 location / {
      set $myresponse;  #we must declare it first, we cannot create vars in lua
      proxy_pass http://mybackendserver;
      body_filter_by_lua 'ngx.var.myresponse = ngx.arg[1]
      ngx.log(ngx.INFO,ngx.var.myresponse)
      ';

    }
}

ps. 也想知道如何从 lua 模块登录以访问日志。

相关内容