preread_timeout
Устанавливает таймаут для фазы prereading потокового соединения. — NGINX Stream Core
Описание
Директива `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` слишком малого значения может привести к разрыву действительных соединений из-за задержек в передаче данных.
Убедитесь, что настроенный таймаут даёт клиентам достаточно времени для установления соединений, особенно в сетях с высокой задержкой.