openresty 请求断开问题,openresty请求断开


有时候,客户端已经断开连接了,但是openresty并未捕获该事件,导致后端请求仍在进行。

使用ngx.on_abort() 可以捕获客户端退出事件,在调用自定义函数来进行扫尾工作。

先为nginx添加lua_check_client_abort on;(http, server, location) 配置

When lua_check_client_abort is set to off (which is the default), then this function call will always return the error message “lua_check_client_abort is off”.

local function my_cleanup()
 -- custom cleanup work goes here, like cancelling a pending DB transaction

 -- now abort all the "light threads" running in the current request handler
 ngx.exit(499)
end

local ok, err = ngx.on_abort(my_cleanup)
if not ok then
 ngx.log(ngx.ERR, "failed to register the on_abort callback: ", err)
 ngx.exit(500)
end

-- doing sth here.

According to the current implementation, this function can only be called once in a single request handler; subsequent calls will return the error message “duplicate call”.

函数只在单次请求中被调用一次。

相关内容

    暂无相关文章