В целях регулирования я пытаюсь регистрировать весь ответ при использовании контроллера входящего трафика nginx для Kubernetes. Из документации и других ответов здесь я использую директиву body_filter_by_lua_block.
Моя карта конфигурации для настройки выглядит так
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
При получении запроса регистрируется следующее:
Response body:
Кажется, $resp_body пуст. У меня есть подозрение, что это может быть связано с тем, что body_filter_by_lua_block запускается позже, чем ведение журнала, однако он должен запускаться в фазе контента, тогда как ведение журнала должно быть в более поздней фазе ведения журнала.
Возможно, я упускаю что-то очевидное, но, по-моему, я перепробовал большинство комбинаций.