proxy_cache_lock_timeout

Задает таймаут на получение блокировки для кэшированного прокси-ответа.

Синтаксисproxy_cache_lock_timeout timeout;
По умолчаниюnone
Контекстhttp, server, location
Аргументы1

Описание

Директива proxy_cache_lock_timeout используется для указания максимального времени, в течение которого NGINX будет ждать получения блокировки для ответа, сохранённого в кэше. Эта директива полезна в ситуациях, когда несколько запросов одновременно пытаются получить один и тот же контент. Используя блокировку, NGINX может сериализовать такие запросы, выполнив бэкенд-запрос только один раз, в то время как остальные запросы будут ожидать, пока ответ не будет помещён в кэш. Такое поведение помогает снизить нагрузку на upstream‑серверы и улучшить общую производительность.

Значение для proxy_cache_lock_timeout задаётся в формате времени, например 10s для 10 секунд, и может быть установлено в 0, чтобы отключить блокировку. Когда запрос приводит к промаху в кэше, если блокировка доступна, запрос продолжит получение содержимого с upstream‑сервера. Если блокировка удерживается другим запросом и время ожидания превышает указанное значение, новый запрос вернёт ошибку 502 вместо бесконечного ожидания.

Директиву можно объявлять в контекстах http, server и location, что обеспечивает гибкость конфигураций, где кэширование требуется на более детальном уровне. Важно тщательно выбирать значение таймаута исходя из времени отклика приложения и ожидаемых паттернов трафика, чтобы избежать ненужных сбоев запросов.

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

location /api {
    proxy_pass http://backend;
    proxy_cache my_cache;
    proxy_cache_lock on;
    proxy_cache_lock_timeout 10s;
}

Установка слишком малого времени ожидания может привести к увеличению числа ошибок 502 Bad Gateway, если upstream‑сервер медленно отвечает.

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

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