push_stream_timeout_with_body
Директива `push_stream_timeout_with_body` задаёт период ожидания для push stream соединений, в ответе которых присутствует тело.
Описание
Директива push_stream_timeout_with_body — важный параметр конфигурации в NGINX Push Stream Module, который определяет, как долго сервер будет ждать активности соединения подписчика, когда в ответе присутствует тело. Эта директива особенно актуальна для долговременных соединений, таких как используемые с EventSource или WebSockets, где сервер постоянно отправляет данные клиенту. Задавая длительность таймаута, сервер может закрывать неактивные соединения и освобождать ресурсы, обеспечивая эффективную обработку активных соединений подписчиков.
Директива принимает один аргумент, задающий период таймаута, который определяется в секундах. Если таймаут достигается в процессе ожидания отправки данных клиенту, сервер завершает соединение. Это важно для поддержания производительности и отзывчивости в сценариях с большим количеством одновременных подписчиков, поскольку предотвращает бесконечное потребление серверных ресурсов "мертвых" соединений. Администраторы могут настраивать это значение таймаута в зависимости от конкретных потребностей приложения, например паттернов взаимодействия пользователей или частоты обновления данных.
Чтобы применить эту директиву, её нужно разместить в HTTP-контексте конфигурации NGINX. Это позволит ей влиять на все соответствующие push stream соединения, управляемые NGINX. Гибкость, предоставляемая этой опцией конфигурации, даёт администраторам серверов возможность эффективно балансировать использование ресурсов и опыт клиента.
Пример конфига
http {
push_stream_timeout_with_body 30s;
}Установка слишком малого таймаута может привести к преждевременному разрыву соединения, особенно в условиях высокой задержки.
Если тело ответа не отправляется, таймаут может не применяться, что может привести к путанице при тестировании поведения с различными типами ответов.