preread_timeout

Устанавливает таймаут для фазы prereading потокового соединения. — NGINX Stream Core

preread_timeout
streamstream server
Синтаксисpreread_timeout time;
По умолчаниюnone
Контекстstream, stream server
МодульNGINX Stream Core
Аргументы1

Описание

Директива `preread_timeout` в модуле NGINX Stream Core задаёт предел времени, в течение которого сервер будет ждать в состоянии prereading, прежде чем закрыть неактивное соединение. В этом состоянии NGINX ожидает, что клиент отправит полный запрос, например пакеты данных при обработке TCP-потока. Если клиент не отправит данные в течение указанного периода таймаута, NGINX завершит соединение, чтобы сэкономить ресурсы и предотвратить возможные DoS-атаки. По сути, она определяет, как долго NGINX будет оставаться терпеливым в начальной фазе потоковой транзакции, прежде чем принять меры по закрытию соединения. Эта директива особенно полезна в средах, где длительные неактивные соединения могут привести к исчерпанию ресурсов, что может ухудшить общую производительность сервера. Параметр для этой директивы — значение времени, указываемое в секундах, минутах или часах, аналогично другим директивам таймаута в конфигурациях NGINX. Администраторам важно тщательно согласовать этот период таймаута с ожидаемым поведением клиентов в их сети, поскольку слишком короткое значение может непреднамеренно нарушить допустимые соединения, которые могут испытывать задержки при передаче данных.

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

stream {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 12345;
        preread_timeout 30s;
        proxy_pass backend;
    }
}

Установка `preread_timeout` слишком малого значения может привести к разрыву действительных соединений из-за задержек в передаче данных.

Убедитесь, что настроенный таймаут даёт клиентам достаточно времени для установления соединений, особенно в сетях с высокой задержкой.