Registro de respuesta al usar el controlador de ingreso nginx

Registro de respuesta al usar el controlador de ingreso nginx

Por motivos normativos, intento registrar la respuesta completa cuando uso el controlador de ingreso nginx para Kubernetes. Al mirar la documentación y otras respuestas aquí, estoy usando la directiva body_filter_by_lua_block.

Mi mapa de configuración para configurar esto se ve así

apiVersion: v1
kind: ConfigMap
metadata:
 name: nginx-configuration
 namespace: ingress-nginx
 labels:
   app.kubernetes.io/name: ingress-nginx
   app.kubernetes.io/part-of: ingress-nginx
data:
 server-snippet: | 
   lua_need_request_body on;

   set $resp_body '';
   body_filter_by_lua_block {
       local resp_body = string.sub(ngx.arg[1], 1, 1000)
       ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
       if ngx.arg[2] then
           ngx.var.resp_body = ngx.ctx.buffered
       end
   }
 log-format-upstream: |
   Response body: $resp_body

Cuando se recibe una solicitud, se registra lo siguiente:

Response body:

Parece que $resp_body está vacío. Sospecho que esto podría estar relacionado con que body_filter_by_lua_block se ejecute después del registro; sin embargo, debería ejecutarse en la fase de contenido, mientras que el registro debería realizarse en la fase de registro posterior.

Probablemente me estoy perdiendo algo obvio aquí, pero creo que he probado la mayoría de las combinaciones.

información relacionada