Para fins regulatórios, estou tentando registrar toda a resposta ao usar o controlador de entrada nginx para Kubernetes. Olhando a documentação e outras respostas aqui, estou usando a diretiva body_filter_by_lua_block.
Meu mapa de configuração para configurar isso é assim
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
Quando uma solicitação é recebida, o seguinte é registrado:
Response body:
Parece que $resp_body está vazio. Suspeito que isso possa estar relacionado ao body_filter_by_lua_block executado posteriormente ao registro; no entanto, ele deve ser executado na fase de conteúdo, enquanto o registro deve estar na fase de registro posterior.
Provavelmente estou perdendo algo óbvio aqui - mas acho que tentei a maioria das combinações.