proxy_read_timeout
Директива `proxy_read_timeout` задаёт время ожидания ответа от проксируемого сервера.
Описание
Директива proxy_read_timeout определяет период ожидания для чтения данных от проксируемого сервера (т.е. сервера, которому NGINX пересылает запросы). Если проксируемый сервер не отправляет данные в течение этого времени, NGINX разрывает соединение и возвращает ошибку клиенту. Этот таймаут важен при работе с медленными бэкендами, где в фазе чтения могут происходить длительные задержки.
Директива принимает один параметр, который задаёт значение таймаута. Это значение может быть указано в секундах или с суффиксом времени (например, m для минут, h для часов). Настройки таймаутов имеют решающее значение для оптимизации производительности приложения и должны устанавливаться с учётом ожидаемого времени отклика сервисов бэкенда. Если соединение простаивает дольше указанного времени, оно закрывается сервером NGINX, чтобы избежать блокировки ресурсов.
Эту директиву можно настраивать в различных контекстах, включая http, server и location. Область применения директивы может влиять на работу таймаутов в сочетании с другими директивами прокси, такими как proxy_connect_timeout и proxy_send_timeout. Оптимальная конфигурация обеспечит лучшее управление ресурсами и улучшит пользовательский опыт при обработке запросов через NGINX.
Пример конфига
location /api {
proxy_pass http://backend;
proxy_read_timeout 30s;
}Установка слишком малого таймаута может привести к преждевременному разрыву корректных соединений, что негативно скажется на опыте пользователей.
Эта директива влияет только на чтение ответа, а не на время, необходимое для установления соединения или отправки запросов.
Обязательно согласуйте эту директиву с другими директивами таймаутов для согласованной обработки таймаутов в конфигурациях NGINX.