插件窝 干货文章 如何使用Nginx作缓存服务器及删除其缓存文件

如何使用Nginx作缓存服务器及删除其缓存文件

缓存 cache proxy Nginx 539    来源:    2025-04-23

使用Nginx作为缓存服务器及管理缓存文件

配置Nginx作为缓存服务器

1. 基本缓存配置

在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;
    }
}

2. 配置参数说明

  • proxy_cache_path: 定义缓存路径和参数

    • /path/to/cache: 缓存文件存储路径
    • levels: 缓存目录层级结构
    • keys_zone: 定义共享内存区域名称和大小
    • inactive: 不活跃的缓存文件保留时间
    • use_temp_path: 是否使用临时路径
  • proxy_cache: 指定使用的缓存区域

  • proxy_cache_valid: 为不同响应码设置缓存时间
  • proxy_cache_key: 定义缓存键的生成规则

高级缓存配置选项

1. 缓存切片(适用于大文件)

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;
    }
}

2. 缓存绕过

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;
}

删除Nginx缓存文件

1. 手动删除缓存文件

  1. 找到缓存目录(配置中proxy_cache_path指定的路径)
  2. 删除特定缓存文件或整个目录:

    # 删除单个缓存文件
    rm /path/to/cache/c/29/b7f54b2df7773722d382f4809d65029c
    
    # 清空整个缓存目录(保留目录结构)
    find /path/to/cache -type f -delete
    

2. 使用Nginx的缓存清除功能(Purge)

  1. 首先需要在Nginx中配置允许清除缓存:
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";
    }
}
  1. 然后可以通过发送请求来清除特定URL的缓存: curl -X PURGE http://example.com/purge/path/to/resource

3. 使用第三方模块

如果需要更强大的缓存管理功能,可以考虑安装ngx_cache_purge模块。

监控缓存状态

1. 添加状态页面

location /nginx-cache-status {
    allow 127.0.0.1;
    deny all;

    proxy_cache_stats on;
}

2. 使用命令行工具检查

# 查看缓存内存使用情况
nginx -T 2>&1 | grep -A10 proxy_cache_path

# 查看缓存目录大小
du -sh /path/to/cache

注意事项

  1. 确保缓存目录有足够的磁盘空间
  2. 根据实际需求调整缓存大小和过期时间
  3. 对于动态内容,谨慎使用缓存或设置较短的缓存时间
  4. 定期监控缓存命中率和效果

通过以上配置和管理方法,您可以有效地使用Nginx作为缓存服务器,并根据需要管理缓存内容。