Я пишу пользовательский плагин для kong
. Плагин преобразует запрос / ответ в соответствии с моим сервером. Я получаю [info] 27#0: *588 client <x> closed keepalive connection
.
После некоторой отладки я обнаружил, что ошибка возникает всякий раз, когда я устанавливаю
ngx.arg[1]
с моим преобразованным ответом. Я подписался на существующий плагин response-transformer
, предоставленный kong.
Это тело функции kong
body_filter
:
local ctx = ngx.ctx
local chunk, eof = ngx.arg[1], ngx.arg[2]
ctx.rt_body_chunks = ctx.rt_body_chunks or {}
ctx.rt_body_chunk_number = ctx.rt_body_chunk_number or 1
if eof then
local someChunks = concat(ctx.rt_body_chunks)
local aBody = responseTransformer.transform(theConf, someChunks)
aBody = unEscapeString(aBody)
ngx.arg[1] = aBody or someChunks
else
ctx.rt_body_chunks[ctx.rt_body_chunk_number] = chunk
ctx.rt_body_chunk_number = ctx.rt_body_chunk_number + 1
ngx.arg[1] = nil
end
Я запустил тот же плагин с локальным фиктивным сервером. Это сработало правильно. Но когда я проксировал свой сервер, я получил ошибку closed keepalive connection
.
Из журналов Конга я вижу, что ответ был преобразован правильно.
Используя curl
, я получаю примерно половину тела ответа.