gpt4 book ai didi

keep-alive - Kong:客户端关闭保持连接

转载 作者:行者123 更新时间:2023-12-02 16:21:37 26 4
gpt4 key购买 nike

我正在为kong编写一个自定义插件。该插件将根据我的服务器转换请求/响应。我得到[info] 27#0: *588 client <x> closed keepalive connection .

经过一番调试,我发现每当我设置 ngx.arg[1]我的 react 发生了转变。我已经关注了现有的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错误。

从 kong 日志中,我可以看到响应已正确转换。

使用curl ,我得到了大约一半的响应。

最佳答案

找到原因了。服务器正在发送 Content-Length header 。在重写主体期间,这保持不变。因此,在传送完整内容之前,连接已关闭。

为了解决这个问题,我必须清除 header_filter 函数中的 Content-Length header :

kong.response.clear_header("内容长度")

关于keep-alive - Kong:客户端关闭保持连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56731106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com