11

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

我可以将 NginX 配置为缓存后端生成的内容,但我希望仅在Backend响应错误http 5xx或完全关闭时才提供缓存的内容。

我们尝试了max-age 为 1 秒的proxy_cache_use_stale选项,它起作用了,但它有一个负面的方面......这只是在这 1 秒缓存老化内容期间从缓存中提供了数十个请求。这些来自缓存的请求将错过进一步Backend的处理(例如统计信息)。

如果后端出现故障,我们只能忍受这种消极情绪,因此,缓存将充当备份或故障转移解决方案。但只要backend启动并响应,就不应从缓存中提供任何请求。

我会很感激任何提示

4

3 回答 3

5

看看proxy_cache_use_stale

于 2013-05-27T16:41:39.977 回答
0

proxy_intercept_errors 可能是您正在寻找的。

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

于 2016-02-08T17:45:26.777 回答
0

不幸的是,这是 XY 问题的一个经典实例,其中提出的问题是关于尝试的解决方案 Y,而不是实际问题 X。

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

于 2018-09-08T07:18:24.730 回答