通过 curl -I 多次请求不存在路径并观察 X-Cache-Status 响应头可验证 proxy_cache_valid 404 是否生效:首次为 MISS,30秒内重复请求应返回 HIT 且状态码仍为 404,超时后恢复 MISS。

直接用 curl -I 多次请求一个确定不存在的路径,配合响应头观察即可验证 proxy_cache_valid 404 是否生效。
关键验证步骤
确保已配置以下基础项:缓存区(proxy_cache_path)、location 中启用缓存(proxy_cache)、显式声明 proxy_cache_valid 404 30s;、必要时加 proxy_ignore_headers Cache-Control Expires;(防后端禁止缓存)。
⚠️ 已弃用 — 该技能已拆分为两个独立技能,以提升模块化程度:**webchat-https-proxy**(HTTPS/WSS 反向代理)和 **webchat-voi...**
- 在对应 location 中加入调试头:
add_header X-Cache-Status $upstream_cache_status; - 找一个后端肯定返回 404 的路径,例如
/nonexistent-page - 首次请求:
curl -I http://your-domain/nonexistent-page→ 应看到X-Cache-Status: MISS,且响应状态码为404 - 30 秒内重复请求同一路径 → 若命中缓存,会返回
X-Cache-Status: HIT,仍是404,且后端访问日志不再新增记录 - 等待超过设定时间(如 31 秒后)再请求 → 应再次变为
MISS,说明缓存已过期
常见失败原因排查
如果始终看不到 HIT,重点检查:
-
proxy_cache指令是否写在该 location 块中(不是 server 或 http 块) - 后端是否返回了
Cache-Control: no-cache或Set-Cookie头 → 需配proxy_ignore_headers - 是否漏掉
proxy_cache_path定义,或keys_zone名称不一致 - 确认后端真实返回的是 404,而不是 Nginx 自己生成的 HTML 错误页(后者是 200 状态码)
增强验证方式
想更稳妥地确认效果,可搭配两处补充配置:
- 开启错误拦截:
proxy_intercept_errors on;+error_page 404 = @404_handler;,让 Nginx 统一接管 404 响应,避免后端干扰 - 启用过期仍可用:
proxy_cache_use_stale error timeout updating http_404;,这样即使缓存刚过期、后端又出错,仍能返回旧的 404,便于观察稳定性

















