diff options
author | Roman Arutyunyan <arut@nginx.com> | 2020-07-29 13:28:04 +0300 |
---|---|---|
committer | Roman Arutyunyan <arut@nginx.com> | 2020-07-29 13:28:04 +0300 |
commit | 554916301c424f02b1cabc073845b64f8681099b (patch) | |
tree | c2b839f6caf8157484d18d7f3e76eca9062f8eaf /src | |
parent | d961012799640ec49dc6c4ce274eff1b6f9fa718 (diff) | |
download | nginx-554916301c424f02b1cabc073845b64f8681099b.tar.gz nginx-554916301c424f02b1cabc073845b64f8681099b.zip |
Cache: ignore stale-if-error for 4xx and 5xx codes.
Previously the stale-if-error extension of the Cache-Control upstream header
triggered the return of a stale response for all error conditions that can be
specified in the proxy_cache_use_stale directive. The list of these errors
includes both network/timeout/format errors, as well as some HTTP codes like
503, 504, 403, 429 etc. The latter prevented a cache entry from being updated
by a response with any of these HTTP codes during the stale-if-error period.
Now stale-if-error only works for network/timeout/format errors and ignores
the upstream HTTP code. The return of a stale response for certain HTTP codes
is still possible using the proxy_cache_use_stale directive.
This change also applies to the stale-while-revalidate extension of the
Cache-Control header, which triggers stale-if-error if it is missing.
Reported at
http://mailman.nginx.org/pipermail/nginx/2020-July/059723.html.
Diffstat (limited to 'src')
-rw-r--r-- | src/http/ngx_http_upstream.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c index 47f98ccb2..dda4046be 100644 --- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -2473,7 +2473,7 @@ ngx_http_upstream_test_next(ngx_http_request_t *r, ngx_http_upstream_t *u) #if (NGX_HTTP_CACHE) if (u->cache_status == NGX_HTTP_CACHE_EXPIRED - && ((u->conf->cache_use_stale & un->mask) || r->cache->stale_error)) + && (u->conf->cache_use_stale & un->mask)) { ngx_int_t rc; |