Mercurial > hg > nginx
comparison src/http/ngx_http_upstream.c @ 7702:7015f26aef90
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.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Wed, 29 Jul 2020 13:28:04 +0300 |
parents | 05e42236e95b |
children | 83c4622053b0 0875101c08f7 |
comparison
equal
deleted
inserted
replaced
7701:8ca47f094d5b | 7702:7015f26aef90 |
---|---|
2471 } | 2471 } |
2472 | 2472 |
2473 #if (NGX_HTTP_CACHE) | 2473 #if (NGX_HTTP_CACHE) |
2474 | 2474 |
2475 if (u->cache_status == NGX_HTTP_CACHE_EXPIRED | 2475 if (u->cache_status == NGX_HTTP_CACHE_EXPIRED |
2476 && ((u->conf->cache_use_stale & un->mask) || r->cache->stale_error)) | 2476 && (u->conf->cache_use_stale & un->mask)) |
2477 { | 2477 { |
2478 ngx_int_t rc; | 2478 ngx_int_t rc; |
2479 | 2479 |
2480 rc = u->reinit_request(r); | 2480 rc = u->reinit_request(r); |
2481 | 2481 |