插件窝 干货文章 nginx缓存怎么清理

nginx缓存怎么清理

缓存 cache Nginx 清理 1008    来源:    2025-04-07

Nginx缓存清理方法

Nginx提供了多种缓存清理方式,以下是几种常用的方法:

1. 删除缓存文件(适用于proxy_cache)

Nginx的proxy_cache会将缓存内容存储在磁盘上,可以直接删除这些文件:

# 找到缓存目录(通常在nginx.conf中配置的proxy_cache_path)
# 例如:/var/cache/nginx

# 删除缓存内容
sudo rm -rf /var/cache/nginx/*

删除后需要重新加载Nginx配置:

sudo nginx -s reload

2. 使用Purge模块

如果Nginx编译时包含了ngx_cache_purge模块,可以通过HTTP请求清理特定URL的缓存:

http://yourdomain.com/path/to/resource

清理请求:

curl -X PURGE http://yourdomain.com/path/to/resource

3. 使用Nginx Plus的缓存清理API

Nginx Plus提供了API接口来管理缓存:

curl -X DELETE http://localhost:80/api/version/http/caches/cache_name

4. 通过修改缓存键使旧缓存失效

可以通过修改缓存键来使旧缓存失效,例如在URL中添加版本号或时间戳:

location / {
    proxy_cache_key "$scheme://$host$request_uri$cookie_user";
    ...
}

5. 设置缓存过期时间

在配置中设置较短的缓存时间:

location / {
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404      1m;
    ...
}

注意事项

  1. 清理缓存可能会暂时增加服务器负载
  2. 生产环境中建议在低峰期执行缓存清理
  3. 对于大型站点,建议逐步清理或使用更精细的控制方法

配置示例

# 在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方式进行更精确的控制。