如何在Backend关闭时配置NginX以提供缓存内容(5xx Resp。代码)?

时间:2013-05-26 04:35:15

标签: caching nginx reverse-proxy

我已经在端口80上使用NginX侦听配置我的系统,提供静态内容并将动态请求代理到后端服务器。

我可以将NginX配置为缓存后端生成的内容,但我希望仅当Backend以错误http 5xx响应时,或者当它完全失效时才会提供此缓存内容。

我们尝试了proxy_cache_use_stale选项,最大年龄为1秒,但它有一个负面...这就是在这个1秒缓存老化内容期间从缓存提供的数十个请求。从缓存提供的这些请求将错过进一步的Backend处理(例如Stats)。

我们只能承受这种负面影响 IF 后端已经失效, 因此,缓存将充当备份或故障转移解决方案。但只要backend启动并响应,就不应该从缓存中提供任何请求。

我很感激任何提示

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:0)

proxy_intercept_errors可能就是你要找的东西。

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors

答案 2 :(得分:0)

不幸的是,这是XY问题的经典实例,其中询问有关尝试解决的问题Y而不是实际问题X的问题。

此处给出了实际问题的解决方案:https://stackoverflow.com/a/52232860/891636