要启用Nginx的内容缓存,需要在配置文件中添加以下指令:
http {
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_path /var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=60m max_size=1g use_temp_path=off;
/var/cache/nginx
- 缓存存储路径levels=1:2
- 目录层级结构keys_zone=CACHE:10m
- 定义共享内存区名称和大小inactive=60m
- 60分钟内未被访问的缓存将被删除max_size=1g
- 缓存最大占用空间use_temp_path=off
- 不使用临时路径proxy_cache CACHE; # 启用缓存并使用指定zone
proxy_cache_valid 200 302 10m; # 200和302状态码缓存10分钟
proxy_cache_valid 404 1m; # 404状态码缓存1分钟
proxy_cache_valid any 5m; # 其他所有状态码缓存5分钟
proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
proxy_cache_bypass $http_cache_control; # 根据请求头决定是否绕过缓存
proxy_no_cache $http_pragma $http_authorization; # 定义不缓存的条件
proxy_cache_lock on; # 启用缓存锁,防止多个请求同时更新缓存
proxy_cache_lock_timeout 5s; # 锁定超时时间
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g
loader_threshold=300 loader_files=200;
proxy_cache_revalidate on; # 启用If-Modified-Since支持
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
可以通过安装第三方模块或使用以下方法清除缓存:
location ~ /purge(/.*) {
allow 127.0.0.1;
deny all;
proxy_cache_purge CACHE "$scheme$request_method$host$1$is_args$args";
}
缓存不生效:
proxy_cache
指令是否启用Cache-Control
或Expires
缓存占用空间过大:
max_size
参数限制最大缓存大小inactive
时间使不活跃缓存更快过期缓存更新不及时:
proxy_cache_bypass
指令强制更新特定请求性能优化:
keys_zone
大小以存储更多缓存键proxy_cache_lock
防止缓存击穿$upstream_cache_status
)通过合理配置这些参数,可以显著提高网站性能并减轻后端服务器负载。