我正在尝试使用proxy_cache_use_stale错误;当目标返回http状态500内部错误时,让nginx提供缓存页面。 我有以下设置:
location /test {
proxy_cache maincache;
proxy_cache_valid 200 10s;
proxy_cache_use_stale error;
proxy_pass http://127.0.0.1:3000/test;
}
location /toggle {
proxy_pass http://127.0.0.1:3000/toggle;
}
测试将返回当前时间和Http状态200或当前时间和http状态500.如果我调用/切换,/ test返回的值将从200切换到500.
我的期望是我应该能够拨打/ test并获取当前时间。然后我应该能够发送一个对/ toggle的调用,并且调用/ test将返回首次调用该函数的时间。发生的事情是它保持最后一次缓存10秒,然后发回当前时间而根本不使用缓存。
我明白设置proxy_cache_valid 200 10s;当返回500以外的内容时,将阻止它刷新缓存,并在10秒后将新内容存储在缓存中,并且无错误消息 回。
我在阅读文档后假设,旧的缓存不会自动清除,直到时间过去等于为缓存设置的非活动标志。我没有为缓存设置非活动标志,所以我期望" proxy_cache_use_stale错误"将阻止缓存刷新,直到10分钟过去(未定义非活动时的默认值),或者不再返回错误。我误解了文档的哪一部分?该如何正确完成?
我所引用的Nginx文档就是这里的文档。 http://nginx.org/en/docs/http/ngx_http_proxy_module.html?&_ga=1.112574977.446076600.1424025436#proxy_cache
答案 0 :(得分:1)
你应该使用" http_500"而不是"错误",请参阅http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream(proxy_cache_use_stale使用与proxy_next_upstream相同的参数)