lingering_close

Директива `lingering_close` включает или отключает задержанное закрытие для HTTP-соединений в NGINX. — NGINX HTTP Core

lingering_close
httpserverlocation
Синтаксисlingering_close on | off;
По умолчаниюoff
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `lingering_close` в NGINX управляет поведением задержанного закрытия клиентских соединений. Когда она установлена в 'on', она позволяет соединениям оставаться открытыми в течение заданного периода после того, как клиент отправил запрос, давая возможность клиенту прочитать оставшиеся данные до полного закрытия соединения. Это особенно полезно при работе с медленными клиентами или теми, кто может не прочитать все данные своевременно, что позволяет предотвратить возможную потерю данных. Когда она установлена в 'off', NGINX закроет соединение сразу после отправки ответа, не ожидая клиента, что может повысить производительность сервера в условиях высокой нагрузки, но сопряжено с риском потери непрочитанных данных. Директива принимает один аргумент, который может быть 'on' или 'off'. В состоянии 'on' NGINX выполняет задержанное закрытие, позволяя соединению оставаться открытым. Если директива установлена в 'off', функция задержанного закрытия отключается, и соединения закрываются сразу. Эта директива может использоваться в различных контекстах, включая http, server и location, что делает её гибкой для разных приложений. При тонкой настройке производительности администраторы NGINX могут использовать эту директиву для оптимизации обработки данных с учётом конкретных сценариев использования и поведения клиентов.

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

server {
    listen 80;
    server_name example.com;
    lingering_close on;
}

Установка lingering_close в 'on' может привести к исчерпанию ресурсов при слишком большом количестве медленных клиентов.

Отключение lingering_close может привести к потере данных, если клиенты не потребляют весь ответ.