[NGINX] proxy_cache_use_stale updating and X-Accel-Expires=0
Maxim Dounin
mdounin at mdounin.ru
Sat Jul 31 01:50:24 MSD 2010
Hello!
On Wed, Jul 21, 2010 at 11:06:26AM +0200, Jérôme Loyet wrote:
> I have a strange situation. I don't really know if it's a bug or a feature.
>
> I'm using nginx as a cached reverse proxy to apache/mod_php.
>
> I have the following (simplified) conf:
>
> proxy_cache_use_stale updating error timeout invalid_header http_500
> http_502 http_503 http_504;
[...]
> Some pages returns the X-Accel-Expires=0 header to exclude a page from
> the cache. It works great. But sometimes, nginx returns those page
> with a 404 response without fetching the page to the backend server.
> Those pages are marked as UPDATING in logs.
Directive proxy_cache_use_stale set to "updating" instructs nginx
to return stale cached response if one request to the same uri
is already goes to backend.
> How a page excluded from the cache can be wrongly (404 instead of 200)
> served by the cache with an UPDATING status ?
Looks like you happen to have stale document with 404 status in
cache (e.g. cached during debugging). It's not expunged from
cache as it's active (i.e. frequently requested), and not updated
in cache as you return X-Accel-Expires=0 in responses.
But it's in cache, and once you get more than one simulteneous
request to this document - nginx returns stale response from cache
as it was said to.
Maxim Dounin
More information about the nginx
mailing list