Nginx proxy_cache_use_stale如何让504源站故障时,陈旧缓存自动降级?

2026-04-29 02:130阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计868个文字,预计阅读时间需要4分钟。

Nginx proxy_cache_use_stale如何让504源站故障时,陈旧缓存自动降级?

当源站返回504 Gateway Timeout错误时,Nginx默认会将错误直接传递给用户。但如果你已缓存过该资源,则结果如下:

为什么 504 场景下 stale 能生效

504 是明确的上游网关超时响应,属于 proxy_cache_use_stale 原生支持的触发条件之一。它和 error(连接失败)、timeout(读取超时)不同:504 表示后端已接收请求但未能按时完成,Nginx 收到的是完整 HTTP 响应包(含状态行和头),因此可安全复用历史缓存。

  • 只要该 URL 曾成功缓存过(哪怕已过期),且配置了 http_504 参数,Nginx 就会在收到 504 时立即返回陈旧副本
  • 无需等待后台更新完成,也不依赖 proxy_cache_background_update
  • 响应速度接近本地磁盘读取,通常在毫秒级,远快于重试或报错

必须配套的基础缓存配置

单独加 proxy_cache_use_stale http_504 不起作用。

阅读全文
标签:NginxProxy

本文共计868个文字,预计阅读时间需要4分钟。

Nginx proxy_cache_use_stale如何让504源站故障时,陈旧缓存自动降级?

当源站返回504 Gateway Timeout错误时,Nginx默认会将错误直接传递给用户。但如果你已缓存过该资源,则结果如下:

为什么 504 场景下 stale 能生效

504 是明确的上游网关超时响应,属于 proxy_cache_use_stale 原生支持的触发条件之一。它和 error(连接失败)、timeout(读取超时)不同:504 表示后端已接收请求但未能按时完成,Nginx 收到的是完整 HTTP 响应包(含状态行和头),因此可安全复用历史缓存。

  • 只要该 URL 曾成功缓存过(哪怕已过期),且配置了 http_504 参数,Nginx 就会在收到 504 时立即返回陈旧副本
  • 无需等待后台更新完成,也不依赖 proxy_cache_background_update
  • 响应速度接近本地磁盘读取,通常在毫秒级,远快于重试或报错

必须配套的基础缓存配置

单独加 proxy_cache_use_stale http_504 不起作用。

阅读全文
标签:NginxProxy