В целях регулирования я пытаюсь регистрировать весь ответ при использовании контроллера входящего трафика 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 запускается позже, чем ведение журнала, однако он должен выполняться на этапе содержимого, тогда как ведение журнала должно быть на более поздней фазе регистрации.
Я, наверное, упускаю здесь что-то очевидное, но думаю, что пробовал большинство комбинаций.