Nginx提供了多种缓存清理方式,以下是几种常用的方法:
Nginx的proxy_cache会将缓存内容存储在磁盘上,可以直接删除这些文件:
# 找到缓存目录(通常在nginx.conf中配置的proxy_cache_path)
# 例如:/var/cache/nginx
# 删除缓存内容
sudo rm -rf /var/cache/nginx/*
删除后需要重新加载Nginx配置:
sudo nginx -s reload
如果Nginx编译时包含了ngx_cache_purge
模块,可以通过HTTP请求清理特定URL的缓存:
http://yourdomain.com/path/to/resource
清理请求:
curl -X PURGE http://yourdomain.com/path/to/resource
Nginx Plus提供了API接口来管理缓存:
curl -X DELETE http://localhost:80/api/version/http/caches/cache_name
可以通过修改缓存键来使旧缓存失效,例如在URL中添加版本号或时间戳:
location / {
proxy_cache_key "$scheme://$host$request_uri$cookie_user";
...
}
在配置中设置较短的缓存时间:
location / {
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
...
}
# 在nginx.conf中添加缓存路径
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;
server {
location / {
proxy_cache my_cache;
proxy_pass http://backend;
# 允许从特定IP清理缓存
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";
}
}
}
选择哪种方法取决于您的具体需求和Nginx配置。对于生产环境,建议使用Purge模块或API方式进行更精确的控制。