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
, но мне интересно, можно ли этого добиться в конфигурации