Nginx缓存清理实战指南

Nginx 是一款轻量级的 Web 服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器,因其高性能、稳定性、丰富的功能集、简单的配置以及低资源消耗而闻名。在处理高并发请求时,Nginx 缓存可以显著提高性能,但过时的缓存可能导致错误或不一致的数据。本文将详细介绍如何清理 Nginx 缓存。

Nginx 缓存机制

在 Nginx 中,缓存分为两类:

  1. 文件缓存:将请求的文件内容缓存在服务器的磁盘上,适用于静态文件。
  2. 内存缓存:将请求的响应缓存在服务器的内存中,适用于动态内容。

文件缓存

文件缓存主要使用 proxy_cache_path 指令进行配置,例如:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
  • /path/to/cache:缓存文件存放路径。
  • levels=1:2:缓存目录的层级结构。
  • keys_zone=my_cache:10m:定义一个名为 my_cache 的共享内存区域,用于存储缓存键,大小为 10MB。
  • max_size=10g:缓存空间的最大值为 10GB。
  • inactive=60m:如果一个文件在 60 分钟内未被访问,则将其从缓存中删除。
  • use_temp_path=off:关闭临时文件路径。

内存缓存

内存缓存通过 proxy_cache 指令进行配置,例如:

proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404      1m;
  • proxy_cache my_cache:指定使用名为 my_cache 的缓存配置。
  • proxy_cache_valid:设置不同 HTTP 状态码的缓存时间,例如 200 和 302 状态码的缓存时间为 10 分钟,404 状态码的缓存时间为 1 分钟。

清理 Nginx 缓存

清理 Nginx 缓存通常有两种方法:

  1. 自动清理:通过设置缓存的有效期,Nginx 会自动清理过期的缓存文件。
  2. 手动清理:通过发送特定的 HTTP 请求来清除缓存。

自动清理

自动清理主要依赖于缓存的有效期设置。例如,通过设置 proxy_cache_valid 指令,Nginx 会自动清理超过有效期的缓存内容。

手动清理

手动清理通常需要使用第三方模块,如 ngx_cache_purge。以下是一个示例配置:

location ~ /purge(/.*) {
  allow 127.0.0.1;
  deny all;
  proxy_cache_purge my_cache $host$1$is_args$args;
}
  • location ~ /purge(/.*):定义清理缓存的 URI 路径。
  • allow 127.0.0.1; deny all;:限制清理缓存的来源 IP。
  • proxy_cache_purge my_cache $host$1$is_args$args;:清理名为 my_cache 的缓存区域,其中 $host$1$is_args$args 是缓存的键值。

测试清理效果

要测试缓存清理的效果,可以发送清理请求,然后检查缓存是否已被删除。例如,发送以下请求:

http://example.com/purge/some/path

然后,您可以通过检查缓存目录或发送请求来验证缓存是否已被清除。

正文到此结束
评论插件初始化中...
Loading...