proxy_cache_bypass 不删除缓存,仅绕过缓存直连后端,需与 proxy_cache、proxy_cache_valid 同在 location 块中配置,并配对 proxy_no_cache 防止缓存污染。

proxy_cache_bypass 不能“清洗”缓存,它不删除已有缓存项,而是让当前请求跳过缓存查找、直连后端。所谓“穿透”,实际是“绕过缓存读取”,适用于管理端需实时获取最新数据的场景——比如运维刷新配置、审核人员查看最新订单、管理员调试接口等。
必须同 location 启用 proxy_cache
只写 proxy_cache_bypass 不生效。它依赖缓存已启用,且必须和 proxy_cache、proxy_cache_valid 在同一个 location 块中:
-
proxy_cache my_cache;(名称需与proxy_cache_path的keys_zone一致) -
proxy_cache_valid 200 302 10m;(定义哪些响应可缓存) -
proxy_cache_bypass $http_x_admin_bypass;(变量名必须匹配)
Header 变量命名要严格规范
客户端发送 X-Admin-Bypass: 1,Nginx 内部变量必须是 $http_x_admin_bypass:
- 全小写
- 短横
-替换为下划线_ - 固定前缀
$http_ - 错写成
$http_X_Admin_Bypass或$http_xadminbypass都无效
值判断规则:非空且不等于 "0" 或 "off"
只要变量展开后满足以下任一条件,就触发绕过:
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
- 值为
"1"、"true"、"force"、"debug"等非空字符串 - 值不是
"0"(不区分大小写) - 值不是
"off"(不区分大小写)
有效请求示例:curl -H "X-Admin-Bypass: true" https://api.example.com/v1/status
无效请求示例:curl -H "X-Admin-Bypass: 0" ... 或 curl ...(无该 Header)
务必搭配 proxy_no_cache 防止缓存污染
仅用 proxy_cache_bypass,Nginx 仍可能把这次回源响应存入缓存(只要状态码匹配 proxy_cache_valid)。管理员带权限 Token 请求的数据,若被缓存,后续普通用户可能误命中。
推荐配对使用:
proxy_cache_bypass $http_x_admin_bypass;proxy_no_cache $http_x_admin_bypass;
两个指令共用同一变量,确保既不读缓存,也不写缓存。
验证是否生效,看响应头中 X-Cache-Status: BYP 或日志中 $upstream_cache_status 字段为 BYP,而非 HIT 或 MISS。










