proxy_cache_bypass and cache refresh

Sergey Kandaurov pluknet at nginx.com
Mon Oct 13 19:21:36 UTC 2014


On 03.10.2014 13:42, Grzegorz Kulewski wrote:
> Hello,
>
> Is it true that a GET request that satisfies proxy_cache_bypass (and generates BYPASS cache status in the access log) should also refresh proxy cache for that URL?
>
> There are several tutorials on the Internet that advise that it works. Also it was working for us before but stopped - either after nginx upgrade or after some configuration change - not sure right now. We are currently running nginx 1.4.7.
>

HIT, STALE, UPDATING, REVALIDATED causes to read from a cache.
MISS, EXPIRED, BYPASS causes to write to a cache.

> Parts of configuration:
>
> http {
> proxy_cache_path /var/cache/www levels=1:2 keys_zone=foo-cache:256m max_size=4g inactive=1h;
> proxy_cache_key "$host$request_uri";
> proxy_cache_lock on;
> proxy_cache_lock_timeout 120s;
> proxy_no_cache $upstream_http_x_bar_dont_cache_me $cookie_x_no_cache;
> proxy_cache_bypass $http_x_bar_cache_refresh $cookie_x_bar_no_cache;
> }
>
> location = / {
> proxy_pass http://foo_old_www;
> proxy_cache foo-cache;
> proxy_cache_valid 200 1h;
> }
>
>
> Request to refresh cache (I double checked that it generates a GET request and a cache status BYPASS):
>
> curl -H 'X-Bar-Cache-Refresh: true' -D - 'http://www.foo.pl/'
>
>
> Any idea why it doesn't work?
>

Anything suspicious in error log?

If not, looking at debug log should be a good thing to do.
http://nginx.org/en/docs/debugging_log.html

Search for "http file cache update" in logs.

Also, make sure that you are not hitting cache format change in 1.7.3:
http://hg.nginx.org/nginx/rev/44b9ab7752e3



More information about the nginx mailing list