在phpEnv环境下配置Nginx缓存清理模块,核心是通过添加ngx_cache_purge第三方模块,让Nginx支持动态清除指定缓存内容,避免手动删除缓存文件的繁琐操作。整个过程分为模块编译、配置修改、规则验证三个部分,下面逐步说明具体操作。

一、准备ngx_cache_purge模块源码
首先需要下载ngx_cache_purge模块的源码包,该模块是Nginx官方认可的缓存清理扩展,支持按URL规则清除缓存。打开phpEnv安装目录下的Nginx文件夹,查看当前Nginx的版本号,下载对应版本的模块源码。
假设phpEnv自带的Nginx版本是1.24.0,下载完成后将源码解压到phpEnv的临时目录,比如D:phpEnvtmpngx_cache_purge,后续编译时需要指定该路径。
二、重新编译Nginx添加模块
phpEnv的Nginx默认没有编译ngx_cache_purge模块,需要重新编译Nginx二进制文件。首先找到phpEnv中Nginx的编译参数,打开phpEnv安装目录下的nginxconf文件夹,查看之前的编译配置记录,或者直接执行以下命令查看当前Nginx的编译参数:
# 进入phpEnv的Nginx目录 cd D:phpEnvnginx # 查看编译参数 nginx -V
复制输出的configure arguments内容,在末尾添加--add-module=../tmp/ngx_cache_purge,然后执行编译命令。注意编译前需要安装MinGW或者Cygwin环境,确保有gcc编译工具。
# 进入Nginx源码目录 cd D:phpEnvtmpnginx-1.24.0 # 执行配置命令,替换为自己的编译参数 ./configure --prefix=../nginx --add-module=../tmp/ngx_cache_purge [其他原有参数] # 编译,不要执行make install,避免覆盖原有配置 make
编译完成后,将objs目录下的nginx.exe文件复制到phpEnv的nginx根目录,替换原有的nginx.exe文件,重启phpEnv的Nginx服务,确认模块加载成功。
三、配置Nginx缓存规则与清理接口
模块加载完成后,需要修改Nginx配置文件,添加缓存路径和清理接口规则。打开phpEnv的Nginx配置文件nginxconfnginx.conf,在http块中添加缓存路径配置:
# 定义缓存路径,levels是缓存目录层级,keys_zone是缓存区名称和大小,inactive是缓存过期时间 proxy_cache_path D:/phpEnv/nginx/cache levels=1:2 keys_zone=cache_zone:10m inactive=1d max_size=1g;
然后在server块中添加缓存规则和清理接口配置:
server {
listen 80;
server_name localhost;
# 缓存清理接口,只允许本地访问
location ~ /purge(/.*) {
# 允许访问的IP,本地开发可以设置为127.0.0.1
allow 127.0.0.1;
deny all;
# 调用缓存清理模块,cache_zone是之前定义的缓存区名称
proxy_cache_purge cache_zone $host$1$is_args$args;
}
# 普通请求配置,启用缓存
location / {
proxy_pass http://127.0.0.1:8080; # 后端服务地址
proxy_cache cache_zone; # 使用定义的缓存区
proxy_cache_key $host$uri$is_args$args; # 缓存键规则
proxy_cache_valid 200 302 1h; # 200和302状态码缓存1小时
proxy_cache_valid 404 1m; # 404状态码缓存1分钟
add_header X-Cache-Status $upstream_cache_status; # 添加响应头显示缓存状态
}
}
配置完成后重启Nginx服务,使配置生效。
四、测试动态清除缓存功能
首先访问一个需要缓存的页面,比如http://localhost/test.html,查看响应头中的X-Cache-Status,如果是HIT说明缓存已经生效。然后访问清理接口,格式为http://localhost/purge/test.html,如果返回200状态码,说明缓存清除成功。
再次访问http://localhost/test.html,查看X-Cache-Status变为MISS,说明缓存已经被动态清除,后续请求会重新生成缓存。
五、常见问题排查
- 如果访问清理接口返回403,检查allow规则是否允许当前访问IP,本地开发建议只开放127.0.0.1访问权限。
- 如果清理接口返回404,检查proxy_cache_purge后面的缓存区名称是否和keys_zone定义的一致。
- 如果缓存没有生效,检查proxy_cache_key的规则是否和清理时的键规则匹配,键不一致会导致无法找到对应缓存。
- 编译后Nginx无法启动,检查是否替换了正确的nginx.exe文件,以及编译参数是否和原有参数一致。
phpEnvNginx缓存清理动态清除缓存ngx_cache_purge修改时间:2026-07-05 17:27:22