要配置Nginx作为缓存服务,主要涉及到两个方面:
一是设置代理缓存(proxy caching)
二是配置缓存清理机制。
以下是配置Nginx缓存服务的基本步骤:
1. 设置代理缓存
a. 创建缓存存储区域
在Nginx的http上下文中定义一个缓存键区域(key zone)和缓存存储路径:
nginx
http {
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;
# 解释:
# /path/to/cache - 存储缓存文件的实际路径,确保Nginx有写入权限
# levels - 缓存文件目录层级结构
# keys_zone - 定义一个名为my_cache的共享内存区域,用来存储活动缓存条目的键值对,10m表示分配的内存大小
# inactive - 缓存项在多长时间内未被访问后被视为过期
# max_size - 缓存总大小限制,超过这个大小后会按照LRU算法删除旧的缓存项
}
server {
# ...
location / {
proxy_pass http://upstream_server; # 后端服务器地址
proxy_cache my_cache; # 使用上面定义的缓存区域
proxy_cache_key "$scheme$request_method$host$request_uri"; # 定义缓存键,通常是基于请求的URL和其他元信息
proxy_cache_valid 200 302 1h; # 对于HTTP 200和302状态码的响应,缓存1小时
# 可以根据需要配置更多缓存有效时间规则
}
# ...
}
2. 配置缓存清理
如果需要手动或自动清理缓存,可以结合 proxy_cache_purge
模块实现。但需要注意的是,proxy_cache_purge
模块并不是Nginx标准功能,可能需要额外安装。
nginx
location /purge {
allow IP_ADDRESS; # 允许哪些客户端IP清除缓存
deny all; # 黑名单模式,拒绝所有其他IP访问
proxy_cache_purge my_cache "$request_uri"; # 当接收到PURGE请求方法时,清除指定URI的缓存
}
# 或者定时清理整个缓存区域(需要借助第三方脚本或cron作业)
3. 启用和检查缓存
确保配置文件正确后,重启Nginx服务使配置生效:
bash
sudo systemctl restart nginx
然后,可以通过查看Nginx的access和error日志,以及proxy_cache_path下的缓存文件来检查缓存是否工作正常。
注意:
- 在生产环境中,还需要根据实际情况调整更多的缓存参数,如缓存控制头(Cache-Control)、ETag处理、Last-Modified等。
- 清理缓存的方法取决于具体需求,上述示例仅展示了最基本的手动清除方式。实际应用中可能需要根据文件变动情况动态清理缓存。