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, но не влияет на другие типы upstream-модулей, такие как HTTP или gRPC-прокси.

Пример конфига

location /long-request {
    uwsgi_pass 127.0.0.1:9000;
    uwsgi_ignore_client_abort on;
}

Если и 'uwsgi_ignore_client_abort', и параметры таймаута соединения настроены неправильно, это может привести к расходованию ресурсов при частых отключениях клиентов.

Использование опции 'on' без учета ресурсов системы может привести к нежелательному выполнению длительных процессов и повлиять на общую производительность.