proxy_read_timeout

Директива `proxy_read_timeout` задаёт время ожидания ответа от проксируемого сервера.

Синтаксисproxy_read_timeout time;
По умолчанию60s
Контекстhttp, server, location
Аргументы1

Описание

Директива 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.

← Ко всем директивам