最可靠的方式是直接在location或server块中为每个状态码单独写proxy_cache_valid指令;需同时满足proxy_cache_path定义缓存区、proxy_cache启用缓存、上游响应可缓存三项前提;按语义分组设置时长,如200/206/304缓存1h、404缓存30s、5xx缓存10s、any兜底5s。

直接在 location 或 server 块中为每个状态码(或状态码组合)单独写 proxy_cache_valid 指令,是最可靠的方式。它不依赖后端响应头,由 Nginx 主动控制缓存生命周期,对网关层抗压和稳定性提升明显。
按状态码语义分组设置合理时长
不同状态码代表不同业务含义,缓存周期应匹配其稳定性与敏感性:
-
200 / 301 / 302 / 206 / 304:正常响应、永久/临时重定向、范围请求、协商成功 → 内容通常稳定,可设为
proxy_cache_valid 200 206 304 1h;;301单独设为proxy_cache_valid 301 7d; -
404:资源不存在 → 缓存过长会掩盖新上线路径,建议
proxy_cache_valid 404 30s;,最长不超过 1 分钟 -
500 / 502 / 503 / 504:后端故障类错误 → 短时缓存可缓解雪崩,推荐
proxy_cache_valid 500 502 503 504 10s; -
any:兜底规则,覆盖所有未显式声明的状态码 → 如
proxy_cache_valid any 5s;(注意:它不会覆盖已定义的状态码)
确保缓存真正生效的三个硬性前提
proxy_cache_valid 单独存在无效,必须同时满足:
macOS 微信消息自动化工具。通过 GUI 自动化实现:发送消息给指定联系人、读取聊天内容、监控新消息。适用于需要自动化微信操作的场景,如定时发送、批量回复、消息备份等。依赖 peekaboo 进行屏幕截图和 UI 交互。仅支持 macOS。开源地址:https://github.com/chairmanmia...
- 在
http块中定义缓存区:proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g; - 在当前
location中启用该缓存:proxy_cache my_cache; - 上游响应本身要“可缓存”:默认不缓存含
Cache-Control: no-cache、private或Set-Cookie的响应;必要时加proxy_ignore_headers Cache-Control Set-Cookie;强制忽略
利用配置层级实现精细控制
Nginx 支持在不同作用域重复使用 proxy_cache_valid,以**最近的作用域为准**:
- 全局策略(
http块):proxy_cache_valid 200 5m; any 1m; - 特定路径覆盖(
location /api/):proxy_cache_valid 200 30s; 500 5s; - 结果:该路径下
200缓存 30 秒、500缓存 5 秒,其余状态码仍走any 1m
验证是否按预期工作
调试阶段建议添加标识头,直观判断缓存行为:
- 加一行:
add_header X-Cache-Status $upstream_cache_status; - 用
curl -I多次请求,观察响应头中X-Cache-Status是否出现HIT、MISS或EXPIRED - 注意:浏览器对
301有强本地缓存,测试时优先用curl绕过干扰










