要真正让敏感请求不进缓存体系,必须同时配置 proxy_cache_bypass 和 proxy_no_cache;推荐用 $http_authorization 一键绕过,登录用户禁用缓存,支持多条件组合触发。

proxy_no_cache 本身不跳过缓存查找,只决定响应是否写入缓存。要真正让敏感请求“不进缓存体系”,必须配合 proxy_cache_bypass 使用——前者防写入,后者防读取,二者条件一致才安全。
用 Authorization 头一键绕过(推荐生产环境)
管理员或调试请求带 Token 时,天然适合触发绕过逻辑:
- 配置方式简洁:在 location 块中写入
proxy_cache_bypass $http_authorization;
proxy_no_cache $http_authorization; - 只要请求含 Authorization 头(如
Bearer xxx),Nginx 就直接回源且不存响应 - 无需改前端、不污染 URL,普通用户无 Token 就无法触发,安全性高
- ⚠️ 必须两者同时配置,否则 Token 响应可能被缓存,导致后续无鉴权请求命中敏感数据
按用户身份区分缓存策略
登录用户看到的内容常需实时性,未登录用户可缓存:
安装并运行 Aperture(Lightning Labs 的 L402 闪电反向代理),用于创建 L402 付费墙、配置付费 API 端点、为其他代理托管付费内容或测试 L402 认证流程。
- 在 http 块中定义映射:
map $cookie_user_id $disable_cache {
" " 0; # 空 cookie → 允许缓存
default 1; # 有 user_id → 禁用缓存
} - 在反代 location 中启用:
proxy_cache_bypass $disable_cache;
proxy_no_cache $disable_cache; - 这样既避免了登录态内容被错误缓存,又不影响游客访问的静态首页命中缓存
通过自定义请求头实现灰度或临时调试
适合测试人员或运维快速验证,不暴露在日志或 CDN 中:
- 配置示例:
proxy_cache_bypass $http_x_no_cache;
proxy_no_cache $http_x_no_cache; - 发起请求时加头即可:
curl -H "X-No-Cache: 1" https://example.com/api/user - 比 URL 参数更干净,也比 Cookie 更易控制生命周期
组合多个条件增强灵活性
单一变量不够用时,可叠加判断:
- 例如同时支持 URL 参数、Cookie 和请求头:
proxy_cache_bypass $arg_nocache $cookie_debug $http_x_no_cache;
proxy_no_cache $arg_nocache $cookie_debug $http_x_no_cache; - 任一变量非空(非 0、非空字符串),即触发完整绕过(查与存均跳过)
- 适用于多角色协作场景:开发用 ?nocache=1,测试用 X-No-Cache,运维用 Cookie










