mirror of
https://github.com/nginx/nginx.git
synced 2025-06-07 09:42:39 +08:00
Cache: fixed caching of intercepted errors (ticket #1382).
When caching intercepted errors, previous behaviour was to use proxy_cache_valid times specified, regardless of various cache control headers present in the response. Fix is to check u->cacheable and use u->cache->valid_sec as set by various cache control response headers, similar to how we do this in the normal caching code path.
This commit is contained in:
parent
105dd42bd7
commit
d07d598c28
@ -2528,13 +2528,23 @@ ngx_http_upstream_intercept_errors(ngx_http_request_t *r,
|
||||
#if (NGX_HTTP_CACHE)
|
||||
|
||||
if (r->cache) {
|
||||
time_t valid;
|
||||
|
||||
valid = ngx_http_file_cache_valid(u->conf->cache_valid, status);
|
||||
if (u->cacheable) {
|
||||
time_t valid;
|
||||
|
||||
if (valid) {
|
||||
r->cache->valid_sec = ngx_time() + valid;
|
||||
r->cache->error = status;
|
||||
valid = r->cache->valid_sec;
|
||||
|
||||
if (valid == 0) {
|
||||
valid = ngx_http_file_cache_valid(u->conf->cache_valid,
|
||||
status);
|
||||
if (valid) {
|
||||
r->cache->valid_sec = ngx_time() + valid;
|
||||
}
|
||||
}
|
||||
|
||||
if (valid) {
|
||||
r->cache->error = status;
|
||||
}
|
||||
}
|
||||
|
||||
ngx_http_file_cache_free(r->cache, u->pipe->temp_file);
|
||||
|
Loading…
Reference in New Issue
Block a user