reset_timedout_connection

Директива `reset_timedout_connection` позволяет NGINX сбрасывать соединения, у которых истёк тайм-аут, чтобы освободить ресурсы. — NGINX HTTP Core

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

Описание

Директива `reset_timedout_connection` используется в контекстах HTTP, server и location для управления бездействующими соединениями, которые превысили допустимый период неактивности. При включении эта директива гарантирует, что NGINX не оставляет соединения открытыми бесконечно, что может необоснованно расходовать ресурсы сервера. Сбрасывая такие соединения, NGINX может поддерживать лучшую производительность при высокой нагрузке и повышать отзывчивость за счёт освобождения ресурсов, которые могут быть выделены новым запросам вместо поддержания «спящих» соединений. Директива принимает один аргумент — флаг, который указывает, активировать ли это поведение. При установке в 'on' NGINX будет систематически проверять соединения с истёкшим тайм-аутом и принудительно их закрывать. Эта настройка особенно полезна в средах с высоким трафиком, где соединения могут оставаться в полувскрытом состоянии из‑за неактивности на стороне клиента. Внутренние параметры таймаута соединений будут определять, как быстро такие простые соединения будут выявлены и закрыты, поэтому директива часто используется совместно с другими директивами таймаута для тонкой настройки управления соединениями. Важно отметить, что хотя эта директива полезна для управления использованием ресурсов, её неправильная настройка может привести к преждевременному завершению соединений, что потенциально ухудшит пользовательский опыт, если соединения сбрасываются слишком агрессивно. Директива служит дополнительной мерой безопасности, повышающей устойчивость обработки соединений на серверах NGINX.

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

server {
    listen 80;
    server_name example.com;

    location / {
        reset_timedout_connection on;
        proxy_pass http://backend;
    }
}

Убедитесь, что настройки таймаутов (например, `keepalive_timeout`) настроены правильно, чтобы не прерывать важные соединения.

Проявляйте осторожность при чрезмерном сбросе соединений, поскольку это может привести к ухудшению опыта пользователей при доступе к вашему веб-приложению.