В обычных условиях при использовании proxy_cache_bypass
nginx получит свежую копию из восходящего потока и перезапишет кешированный ответ новым.
Но если URL изменится с кэшируемого на некэшируемый ответ (например, на ответ 4xx с Кэш-контроль: без кеша
), затем с помощью proxy_cache_bypass
действительно будет обслуживать свежую копию из восходящего потока, но оставит старую копию в кеше.
Это означает, что каждый раз, когда URL-адрес запрашивается без запуска proxy_cache_bypass
, он будет продолжать обслуживать старый кеш.
Я предполагаю, что это намеренное поведение, потому что proxy_cache_bypass
Только перезаписывает кэшированные ответы, сохранив новый, и без кэша
ответ значит нечего сохранять? Это то, что происходит?
Как я могу решить эту проблему? Я не хочу включать кеширование для ответов 4xx...
Я использую nginx/1.14.2
proxy_cache_path /var/cache/nginx level=1:2 keys_zone=my-cache:70m max_size=28g inactive=1d;
proxy_temp_path /var/cache/nginx/tmp;
proxy_cache мой-кэш;
proxy_cache_key $remote_user$scheme$host$request_uri;
proxy_cache_use_stale ошибка timeout invalid_header http_500 http_502 http_503 http_504 http_429;
proxy_cache_bypass $http_cache_control;
proxy_read_timeout 90;
add_header X-Cache-Status $upstream_cache_status;
пометка выключена;