proxy_cache_bypass 可让 nginx 跳过缓存直连后端,需变量非空且不为"0"/"off";支持多变量或 map 精准控制,并须配 proxy_no_cache 防止响应被缓存。

直接用 proxy_cache_bypass 指令就能让 Nginx 跳过缓存、直连后端,它不删旧缓存,也不影响其他请求,关键是变量值要“有效”——非空且不等于 "0"、"off" 或空字符串。
基础写法:一个 Header 就够了
在启用缓存的 location 块里加一行:
-
proxy_cache_bypass $http_x_bypass_cache;→ 自动读取请求头X-Bypass-Cache的值 - 发起请求时带上这个头:
curl -H "X-Bypass-Cache: 1" https://example.com/api - 只要值不是空、不是
"0"或"off",比如"true"、"debug"、"1",就会绕过缓存
多条件触发:满足任一即绕过
用空格分隔多个变量,任意一个生效就跳过缓存:
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
proxy_cache_bypass $http_x_bypass_cache $arg_nocache $cookie_admin;- 支持请求头(
$http_*)、URL 参数($arg_*)、Cookie($cookie_*) - 例如:
?nocache=1或Cookie: admin=1同样能触发
更严格的控制:用 map 映射精准值
如果只认特定值(比如只接受 "1"),避免误触发:
- 先定义映射:
map $http_x_bypass_cache $bypass_flag { "1" 1; default 0; }- 再使用:
proxy_cache_bypass $bypass_flag; - 这样
X-Bypass-Cache: 0或X-Bypass-Cache: abc都不会绕过
必须配套:防止响应被错误缓存
只配 proxy_cache_bypass 不够,带该头的响应可能被存进缓存,污染后续请求:
- 务必加上:
proxy_no_cache $http_x_bypass_cache; - 两个指令变量名要完全一致,否则逻辑断开
- 这样既不查缓存,也不存响应,真正实现“穿透”










