🚀 Nginx 缓存配置与清理实战指南
在高并发场景下,Nginx 的缓存能力可极大减轻后端服务器压力、提升网站响应速度。但缓存配置不当或长期未清理,也可能引发资源浪费、数据不一致等问题。

Nginx 缓存配置与清理实战指南
本文将带你系统了解:
-
如何配置 Nginx 缓存
-
如何精准清理缓存
-
如何使用
ngx_cache_purge
模块进行缓存控制
🔧 一、Nginx 缓存配置实例详解
✅ 1. 在主配置文件中定义缓存路径
http {
proxy_temp_path /dev/shm/cache/proxy_temp_dir;
proxy_cache_path /dev/shm/cache/proxy_cache_dir levels=1:2 keys_zone=cache_one:512m inactive=30m max_size=5g;
}
关键参数解释:
-
proxy_temp_path:临时缓存目录,用于缓冲未完全接收的响应数据
-
proxy_cache_path:实际缓存存放路径,指定缓存目录、层级、命名空间和大小限制
-
levels=1:2:控制缓存文件子目录结构,优化大量小文件的读写效率
-
keys_zone=cache_one:512m:在共享内存中为缓存 key 分配空间(如 512MB)
-
inactive=30m:缓存未被访问后保留30分钟
-
max_size=5g:设置最大缓存空间,超出后触发 LRU 删除
✅ 2. 虚拟主机中配置缓存策略(静态资源缓存)
server {
listen 80;
server_name abc.xyz.com;
location ~*\.(js|html|gif|jpg|jpeg|png|css|ico)$ {
proxy_pass http://127.0.0.1:90;
proxy_cache cache_one;
proxy_cache_key "$host:$server_port$request_uri";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_cache_valid 200 20m;
add_header X-Cache $upstream_cache_status;
}
}
该配置可以有效缓存静态资源 20 分钟,并通过响应头 X-Cache
告知是否命中缓存。
🧹 二、Nginx 缓存清理方式大全
🛠️ 方式一:使用 Shell 脚本批量清理缓存
推荐使用交互式脚本 nginx_cache_clean.sh
,支持按类型、文件名、目录等方式灵活清理缓存文件。
find /path/to/cache -type f | xargs rm -f
或者使用更人性化的脚本清单操作(略去脚本内容,详见文章顶部原脚本)。
🧩 方式二:引入 ngx_cache_purge 模块实现 URL 级清理
安装步骤简述:
-
下载模块源码并解压:
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar xf ngx_cache_purge-2.3.tar.gz
-
查看原有 nginx 编译参数:
/usr/local/nginx/sbin/nginx -V
-
重新编译 nginx(注意:只
make
,不要make install
!)
./configure ... --add-module=/root/ngx_cache_purge-2.3
make
-
替换 nginx 可执行文件并重启服务。
✅ 使用 purge 清理指定缓存资源
配置虚拟主机允许访问 /purge
路径清理缓存:
location ~ /purge(/.*) {
allow 127.0.0.1;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
清理操作示例:
访问图片:
http://abc.xyz.com/static/img/logo.png
清除缓存:
http://abc.xyz.com/purge/static/img/logo.png
⚠️ 若清理失败返回 404,检查以下配置点:
-
proxy_cache_key
是否与清理路径一致 -
location ~ /purge
的匹配位置是否在其它规则前
🔄 三、开发环境禁用缓存配置
为避免浏览器静态资源缓存干扰开发调试,可加入如下配置:
location ~.*\.(js|css|html|png|jpg)$ {
add_header Cache-Control no-cache;
}
这样,刷新页面即可强制重新加载资源,避免调试困扰。
✅ 总结:缓存是性能利器,也是风险点
Nginx 的缓存配置强大灵活,但也需配合缓存清理机制,做到:
-
高性能:合理使用
proxy_cache
-
高可控:按需清理、按状态过期
-
易调试:开发环境禁用缓存防止误判
💡 建议开发/生产环境使用不同缓存策略,定期检查缓存命中率和空间使用。