uwsgi_ignore_client_abort
'uwsgi_ignore_client_abort' 指令控制 uWSGI 响应期间对客户端断开连接的处理。 — NGINX HTTP Core
uwsgi_ignore_client_abort
httpserverlocation
语法uwsgi_ignore_client_abort on | off;
默认值off
上下文http, server, location
模块NGINX HTTP Core
参数flag
说明
'uwsgi_ignore_client_abort' 指令用于确定 NGINX 是否应该在客户端已断开连接的情况下仍继续处理到 uWSGI 服务器的请求。当设置为 'on' 时,NGINX 会忽略任何提前的客户端中止,这意味着它会继续将请求发送到 uWSGI 应用并等待处理完成,而不考虑客户端的连接状态。这对于需要确保应用完成所有业务逻辑的长时间运行请求很有用,即使响应可能不会被传回客户端。 默认情况下,NGINX 的行为是,如果客户端在服务器处理请求完成之前断开连接,它会终止与后端服务器的连接,可能会中断任何正在进行的处理。使用 'uwsgi_ignore_client_abort on;' 后,服务器在这种情况下仍会继续处理,这可能有助于避免不必要的资源处理并在某些用例中提高应用吞吐量。这有助于确保由客户端发起的任务(例如文件上传或密集计算)能够完全完成。 该指令可以在 'http'、'server' 和 'location' 上下文中指定,依据配置中预期处理请求的位置提供灵活性。它适用于 uWSGI 模块特定的配置,但不影响其他类型的上游模块,例如 HTTP 或 gRPC 代理。
配置示例
location /long-request {
uwsgi_pass 127.0.0.1:9000;
uwsgi_ignore_client_abort on;
}⚠
如果同时未正确管理 'uwsgi_ignore_client_abort' 和连接超时设置,当客户端频繁断开时,可能导致资源浪费。
⚠
在未考虑系统资源的情况下使用 'on' 选项,可能导致不必要地执行长时间运行的进程,从而影响整体性能。