Nginx缓存策略配置中,通过proxy_cache_path定义缓存路径、层级目录、内存大小及过期时间;proxy_cache启用缓存;proxy_cache_valid针对200、304等状态码设置有效期;proxy_cache_bypass实现强制刷新。并配合缓存键、忽略请求头等配置,可有效应对流量高峰,提升网站响应速度,减轻后端服务器负载。
聊到Nginx缓存策略,proxy_cache指令是绕不开的核心工具。不少刚接触的人会被一堆参数绕晕,其实拆开来看,逻辑相当清晰。下面先看一个完整的配置示例,再逐项拆解。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
在http块里先声明缓存的基本骨架。
http {
# 缓存路径
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
listen 80;
server_name example.com;
location / {
# 启用缓存
proxy_cache my_cache;
proxy_pass http://backend_server;
# 缓存控制头
add_header X-Proxy-Cache $upstream_cache_status;
# 缓存有效期
expires 30d;
# 缓存方法
proxy_cache_methods GET HEAD;
# 缓存键
proxy_cache_key "$scheme$proxy_host$request_uri";
# 缓存条件
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
# 缓存刷新
proxy_cache_bypass $http_pragma;
proxy_cache_revalidate on;
}
}
}
proxy_cache_path:定义缓存的物理存储路径和核心参数。
levels=1:2:缓存目录层级,比如/var/cache/nginx/c/29/...这样避免单目录文件过多。keys_zone=my_cache:10m:缓存区域的名字和元数据内存大小,10m足够存几万个键。max_size=1g:缓存最大占用磁盘空间,超过1g会自动清理。inactive=60m:缓存项如果60分钟内没有被访问,就会被视为过期并清理。use_temp_path=off:建议关闭,直接写入缓存目录,避免额外IO开销。proxy_cache:启用缓存,并指向刚才定义的区域名称(my_cache)。proxy_pass:后端服务器地址,缓存对象就是从这个地址获取的响应。add_header X-Proxy-Cache $upstream_cache_status:响应头里加一个标记,告诉客户端这次命中(HIT)还是未命中(MISS),方便调试。expires 30d:浏览器端的缓存有效期,30天后重新请求。proxy_cache_methods GET HEAD:只缓存GET和HEAD请求,POST等一般没必要缓存。proxy_cache_key:缓存键的生成规则,默认用请求的完整URL,这里自定义了$scheme$proxy_host$request_uri,基本上就是协议+域名+路径和参数。proxy_cache_valid:针对不同HTTP状态码设置缓存时长。比如200和302缓存10分钟,404只缓存1分钟(避免频繁打后端)。proxy_cache_bypass $http_pragma:如果客户端请求头里有Pragma: no-cache,则绕过缓存,强制从后端取数据。proxy_cache_revalidate on:启用缓存重新验证,当缓存过期但后端资源未变化时,可以减少304响应带来的带宽消耗。proxy_cache_bypass做主动刷新。掌握这些参数,再结合业务场景灵活调整,Nginx的缓存就能扛住大部分流量高峰。配置并不复杂,关键是理解每个参数背后的意图。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述