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.