我正在寻找一个缓存反向代理(比如 squid 或 varnish),它能够很好地支持在发生故障时提供陈旧的内容 - 换句话说,如果我正在代理的应用程序消失或开始提供内部服务器错误我'希望缓存继续提供从后端保存的最后一个好的响应。本质上,我希望缓存服务器在出现问题时充当额外的保护层。
有没有人配置过 Squid 或类似的东西来做到这一点?知道开箱即用支持此功能的任何产品吗?
我正在寻找一个缓存反向代理(比如 squid 或 varnish),它能够很好地支持在发生故障时提供陈旧的内容 - 换句话说,如果我正在代理的应用程序消失或开始提供内部服务器错误我'希望缓存继续提供从后端保存的最后一个好的响应。本质上,我希望缓存服务器在出现问题时充当额外的保护层。
有没有人配置过 Squid 或类似的东西来做到这一点?知道开箱即用支持此功能的任何产品吗?
Squid 在 2.7 版本中可以做到这一点。具体来说,使用stale-if-error指令。更多细节可以在以下位置找到:
看起来 Varnish 还不能满足这个要求:http: //varnish.projects.linpro.no/ticket/369
这取决于“不可用”有多长时间。Squid 有一个配置“refresh_stale_hit”,它主要用于通过在缓存更新时允许提供稍微陈旧的内容来消除一些延迟。不过,很确定它不会覆盖从 Web 服务器获得错误响应。有一个完整的“离线”模式将继续提供缓存结果(设计用于......等待它......离线使用!)所以代码路径在那里:不确定是否可以将其配置为两个代理好的结果,忽略不好的结果。