如何根据请求头特征,用map指令灵活调整proxy_cache_valid缓存周期?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1173个文字,预计阅读时间需要5分钟。
可以通过 `map` 指令将请求头(如 `User-Agent`、`Cookie`、`Authorization` 等)映射为具有有效期的缓存变量,然后在 `proxy_cache_valid` 中引用这些变量实现动态控制。注意:
用 map 提取请求头特征并映射缓存策略标识
在 http 块中定义 map,根据请求头内容生成一个代表缓存时长的字符串(如 "60s"、"1h"),或更推荐生成整数秒(便于后续逻辑扩展):
map $http_user_agent $cache_ttl { ~*curl|httpie 10; ~*Mobile 300; ~*Firefox|Chrome 3600; default 86400; }
说明:
-
$http_user_agent是内置变量,对应User-Agent请求头;其他可用$http_cookie、$http_accept_language等 - ~* 表示忽略大小写匹配
- proxy_cache_valid 的固定规则对齐
通过 proxy\_cache\_valid 多行匹配实现“条件化”生效
Nginx 的 proxy_cache_valid 不接受变量,但支持按响应状态码多行声明。
本文共计1173个文字,预计阅读时间需要5分钟。
可以通过 `map` 指令将请求头(如 `User-Agent`、`Cookie`、`Authorization` 等)映射为具有有效期的缓存变量,然后在 `proxy_cache_valid` 中引用这些变量实现动态控制。注意:
用 map 提取请求头特征并映射缓存策略标识
在 http 块中定义 map,根据请求头内容生成一个代表缓存时长的字符串(如 "60s"、"1h"),或更推荐生成整数秒(便于后续逻辑扩展):
map $http_user_agent $cache_ttl { ~*curl|httpie 10; ~*Mobile 300; ~*Firefox|Chrome 3600; default 86400; }
说明:
-
$http_user_agent是内置变量,对应User-Agent请求头;其他可用$http_cookie、$http_accept_language等 - ~* 表示忽略大小写匹配
- proxy_cache_valid 的固定规则对齐
通过 proxy\_cache\_valid 多行匹配实现“条件化”生效
Nginx 的 proxy_cache_valid 不接受变量,但支持按响应状态码多行声明。

