要启用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)通过合理配置这些参数,可以显著提高网站性能并减轻后端服务器负载。