Nginx - использовать логику proxy_cache_lock, когда срок действия кэша истек, чтобы избежать многоадресного запроса - PullRequest
0 голосов
/ 06 января 2019

Proxy_cache_lock логика означает, что когда NGINX получает пару запросов одновременно, он отправляет только один восходящий поток, а остальные ожидают, пока первый не вернется, и вставят в кэш (время ожидания настроено в proxy_cache_lock_timeout).

Если срок действия элемента кэша истек , а NGINX получает пару запросов одновременно, все они передаются в восходящий поток.

Вопрос: Как настроить NGINX на такую ​​же логику, что и proxy_cache_lock, даже когда элемент кэша существует, но срок его действия истек?

Я проверил proxy_cache_use_stale но это не то, что я ищу, потому что он возвращает устаревший кеш при обновлении, и мне нужно ждать, пока ответ не вернется из апстрима ...

Это мой текущий NGINX файл конфигурации:

http {
    include         /etc/nginx/mime.types;
    default_type    application/octet-stream;
    access_log          /var/log/nginx/access.log  main;

    proxy_cache_path @MY_CACHE_PATH@; # this obviously has the path in my file 
    proxy_cache_use_stale updating;
    proxy_cache_lock on;
    proxy_cache_lock_timeout 15s;
    proxy_cache_valid 404   10s;
    proxy_cache_valid 502   0s;
    proxy_cache one;

    server {
            listen 80;
            proxy_read_timeout 15s;
            proxy_connect_timeout 5s;
            include locations.conf;
    }
}

Мне удалось добиться такого поведения, изменив исходный код NGINX, но мне интересно, можно ли этого добиться в конфигурации

...