在Nginx配置文件中(http或server部分)添加以下内容:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;
server {
# ...其他配置...
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
# 可选:添加缓存键
proxy_cache_key "$scheme$request_method$host$request_uri";
# 可选:添加缓存头信息
add_header X-Proxy-Cache $upstream_cache_status;
}
}
proxy_cache_path
: 定义缓存路径和参数
/path/to/cache
: 缓存文件存储路径levels
: 缓存目录层级结构keys_zone
: 定义共享内存区域名称和大小inactive
: 不活跃的缓存文件保留时间use_temp_path
: 是否使用临时路径proxy_cache
: 指定使用的缓存区域
proxy_cache_valid
: 为不同响应码设置缓存时间proxy_cache_key
: 定义缓存键的生成规则proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;
server {
# ...其他配置...
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
slice 1m;
proxy_cache_key "$uri$slice_range";
proxy_set_header Range $slice_range;
proxy_cache_lock on;
}
}
location / {
# 当请求头中有Cache-Control: no-cache时绕过缓存
proxy_cache_bypass $http_cache_control;
# 或者根据特定条件绕过
set $no_cache 0;
if ($arg_nocache = "1") {
set $no_cache 1;
}
proxy_cache_bypass $no_cache;
}
proxy_cache_path
指定的路径)删除特定缓存文件或整个目录:
# 删除单个缓存文件
rm /path/to/cache/c/29/b7f54b2df7773722d382f4809d65029c
# 清空整个缓存目录(保留目录结构)
find /path/to/cache -type f -delete
server {
# ...其他配置...
location ~ /purge(/.*) {
allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;
proxy_cache_purge my_cache "$scheme$request_method$host$1";
}
}
curl -X PURGE http://example.com/purge/path/to/resource
如果需要更强大的缓存管理功能,可以考虑安装ngx_cache_purge模块。
location /nginx-cache-status {
allow 127.0.0.1;
deny all;
proxy_cache_stats on;
}
# 查看缓存内存使用情况
nginx -T 2>&1 | grep -A10 proxy_cache_path
# 查看缓存目录大小
du -sh /path/to/cache
通过以上配置和管理方法,您可以有效地使用Nginx作为缓存服务器,并根据需要管理缓存内容。