插件窝 干货文章 Nginx内容缓存怎么配置及常见参数配置有哪些

Nginx内容缓存怎么配置及常见参数配置有哪些

缓存 cache proxy Nginx 888    来源:    2025-04-27

Nginx内容缓存配置指南

基本缓存配置

要启用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;
        }
    }
}

主要缓存参数详解

1. proxy_cache_path

定义缓存存储路径和基本参数:

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 - 不使用临时路径

2. 缓存控制指令

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分钟

3. 缓存键设置

proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";

4. 缓存绕过条件

proxy_cache_bypass $http_cache_control;  # 根据请求头决定是否绕过缓存
proxy_no_cache $http_pragma $http_authorization;  # 定义不缓存的条件

5. 缓存锁定

proxy_cache_lock on;  # 启用缓存锁,防止多个请求同时更新缓存
proxy_cache_lock_timeout 5s;  # 锁定超时时间

高级缓存配置

1. 分片缓存

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;

2. 缓存重新验证

proxy_cache_revalidate on;  # 启用If-Modified-Since支持

3. 缓存更新方法

proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;

4. 缓存清除

可以通过安装第三方模块或使用以下方法清除缓存:

location ~ /purge(/.*) {
    allow 127.0.0.1;
    deny all;
    proxy_cache_purge CACHE "$scheme$request_method$host$1$is_args$args";
}

常见问题解决方案

  1. 缓存不生效

    • 检查proxy_cache指令是否启用
    • 检查后端响应头是否包含Cache-ControlExpires
    • 确保缓存路径有写入权限
  2. 缓存占用空间过大

    • 调整max_size参数限制最大缓存大小
    • 缩短inactive时间使不活跃缓存更快过期
  3. 缓存更新不及时

    • 使用proxy_cache_bypass指令强制更新特定请求
    • 考虑使用缓存清除机制
  4. 性能优化

    • 增加keys_zone大小以存储更多缓存键
    • 启用proxy_cache_lock防止缓存击穿

最佳实践建议

  1. 根据内容类型设置不同的缓存时间
  2. 对静态资源和动态内容使用不同的缓存策略
  3. 监控缓存命中率($upstream_cache_status)
  4. 定期清理旧缓存文件
  5. 在高流量环境中考虑使用多级缓存

通过合理配置这些参数,可以显著提高网站性能并减轻后端服务器负载。