You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX第三方HTTPS代理缓存配置后X-Cache-Status始终为MISS如何解决

NGINX代理缓存MISS问题排查修复方案

核心故障原因

你当前配置的缓存不生效和HTTPS代理参数无关,问题由以下几个配置缺失/错误导致:

  • 未配置proxy_cache_valid规则,NGINX默认无任何缓存时长规则,不会主动缓存任何上游响应
  • 仅忽略了Cache-Control响应头,未忽略Expires、Set-Cookie、Vary等会触发NGINX跳过缓存逻辑的响应头,第三方接口返回的这类头会直接禁用缓存
  • 缓存状态变量混淆,日志中记录的$http_x_cache_status是客户端请求携带的请求头参数,你配置返回的缓存状态对应的变量是$upstream_cache_status,日志取值错误导致误判
  • 若需要缓存POST请求,当前proxy_cache_key仅包含请求URI,未包含POST请求体,相同URI不同参数的请求会出现缓存逻辑异常,也可能导致缓存写入失败
  • 缓存目录权限异常,/var/cache/nginx/cache如果不属于nginx运行用户,会导致缓存文件写入失败

分步修复操作

  1. 补全站点配置的location块缓存规则,新增以下配置:
# 配置指定响应码的缓存时长,可根据业务需要调整时长和覆盖的响应码
proxy_cache_valid 200 206 301 302 2h;
# 忽略所有会禁用缓存的上游响应头
proxy_ignore_headers Cache-Control Expires Set-Cookie Vary;
# 隐藏上游返回的Set-Cookie头,避免干扰缓存逻辑
proxy_hide_header Set-Cookie;
  1. (可选,仅需要缓存POST请求时操作)修改缓存键规则,加入请求体特征:
proxy_cache_key $scheme$proxy_host$request_uri$request_body;

如果不需要缓存POST请求,直接将proxy_cache_methods配置中的POST参数删除即可。
3. 修正主配置文件的日志格式,将日志中的$http_x_cache_status替换为$upstream_cache_status,保证日志记录的缓存状态正确。
4. 修正缓存目录权限,执行以下命令:

chown -R nginx:nginx /var/cache/nginx/cache
chmod -R 755 /var/cache/nginx/cache
  1. 校验配置无报错后重载NGINX:
nginx -t && nginx -s reload

验证方法

连续两次发起相同的接口请求,查看第二次响应头的X-Cache-Status字段,若返回HIT则说明缓存已生效,同时检查/var/cache/nginx/cache目录下已生成缓存文件。

内容的提问来源于stack exchange,提问作者justinavery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:18:04