要让nginx真正绕过缓存,必须同时配置proxy_cache_bypass和proxy_no_cache且共用同一变量:前者控制不读缓存,后者控制不写缓存,缺一不可。

要让 Nginx 真正绕过缓存,不能只配其中一个指令——proxy_no_cache 和 proxy_cache_bypass 各管一段,必须成对使用,变量一致,才能实现“既不读旧缓存,也不存新响应”的完整绕过。
proxy_cache_bypass:控制“不读缓存”
它决定当前请求是否跳过缓存查找,直接转发给后端。值为非空且不等于 "0" 或 "off"(不区分大小写)时生效。
- 比如
$arg_nocache="1"、$http_x_refresh="true"、$cookie_sessionid="abc123"都会触发绕过 - 值为空字符串、"0"、"off" 则不触发
- 注意:它不影响响应是否被缓存——即使绕过读取,后端返回的内容仍可能被存进缓存区
proxy_no_cache:控制“不写缓存”
它决定本次响应是否禁止写入缓存。逻辑与 proxy_cache_bypass 完全一致:只要变量值非空且不为 "0"/"off",响应就不会落盘。
macOS 微信消息自动化工具。通过 GUI 自动化实现:发送消息给指定联系人、读取聊天内容、监控新消息。适用于需要自动化微信操作的场景,如定时发送、批量回复、消息备份等。依赖 peekaboo 进行屏幕截图和 UI 交互。仅支持 macOS。开源地址:https://github.com/chairmanmia...
- 防止敏感内容(如登录态页面、调试接口)污染缓存池
- 单独使用时,请求仍会先查缓存;若命中,就直接返回旧内容——用户看不到新数据
- 配合 proxy_cache_bypass 才能避免“读旧+存新”的双重问题
必须共用同一变量,且在 location 块内启用
两个指令必须写在同一个 location 块中,并引用完全相同的变量(如 $skip_cache),否则无法协同生效。
- 变量推荐用
map预定义,把路径、Header、Cookie、参数等映射为 0/1 - 例如:
map $request_uri $skip_cache { ~*^/admin/ 1; default 0; } - 然后在 location 中写:
proxy_cache_bypass $skip_cache;<br> proxy_no_cache $skip_cache;
常见组合用法示例
实际场景中常需多条件叠加判断:
- 带调试参数、管理员角色或自定义头都绕过:
proxy_cache_bypass $arg_debug $http_x_user_role $http_x_no_cache;<br> proxy_no_cache $arg_debug $http_x_user_role $http_x_no_cache;
- 登录用户不缓存:
map $cookie_sessionid $skip_cache_by_login { ~. 1; default 0; }
再在 location 中引用该变量










