插件窝 干货文章 Nginx Proxy Manager实现HTTP请求的缓存加速

Nginx Proxy Manager实现HTTP请求的缓存加速

缓存 cache Proxy 配置 591    来源:    2025-04-11

Nginx Proxy Manager 实现 HTTP 请求缓存加速方案

Nginx Proxy Manager (NPM) 是一个基于 Nginx 的图形化管理工具,可以方便地配置反向代理、SSL 证书等。要实现 HTTP 请求的缓存加速,可以通过以下步骤配置:

1. 基本缓存配置

在 NPM 中可以通过自定义 Nginx 配置来实现缓存:

  1. 登录 NPM 管理界面
  2. 选择需要加速的代理主机
  3. 在 "Advanced" 选项卡中添加以下配置:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;

server {
    # ... 其他配置保持不变

    location / {
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        proxy_cache_background_update on;
        proxy_cache_lock on;

        # 其他代理配置
        proxy_pass http://backend;
    }
}

2. 缓存参数详解

  • proxy_cache_path: 定义缓存存储路径和区域

    • /var/cache/nginx: 缓存存储路径
    • levels=1:2: 目录层级结构
    • keys_zone=my_cache:10m: 定义共享内存区域名称和大小
    • inactive=60m: 60分钟内未被访问的缓存将被删除
    • use_temp_path=off: 不使用临时路径
  • proxy_cache: 指定使用的缓存区域

  • proxy_cache_valid: 定义不同响应码的缓存时间

    • 200 302 10m: 成功和重定向响应缓存10分钟
    • 404 1m: 404响应缓存1分钟
  • proxy_cache_use_stale: 当后端出现问题时使用过期缓存

  • proxy_cache_background_update: 后台更新过期缓存

  • proxy_cache_lock: 启用缓存锁防止多个请求同时更新同一缓存

3. 高级缓存策略

3.1 按文件类型缓存

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    proxy_cache my_cache;
    proxy_cache_valid 200 302 12h;
    expires 7d;
    add_header Cache-Control "public";
}

3.2 忽略特定请求的缓存

location / {
    # 不缓存POST请求
    if ($request_method = POST) {
        set $no_cache 1;
    }

    # 不缓存带特定参数的请求
    if ($query_string ~* "nocache") {
        set $no_cache 1;
    }

    proxy_no_cache $no_cache;
    proxy_cache_bypass $no_cache;

    proxy_cache my_cache;
    # ... 其他缓存配置
}

3.3 缓存清除机制

可以通过添加以下配置实现缓存清除:

location ~ /purge(/.*) {
    allow 127.0.0.1;
    allow 192.168.1.0/24;
    deny all;
    proxy_cache_purge my_cache "$scheme$request_method$host$1";
}

4. 监控缓存命中率

在 Nginx 配置中添加:

server {
    location /nginx_status {
        stub_status;
        allow 127.0.0.1;
        allow 192.168.1.0/24;
        deny all;
    }
}

然后可以通过 http://yourdomain.com/nginx_status 查看状态,其中包含缓存命中信息。

5. 性能优化建议

  1. 缓存分区:为不同类型的资源设置不同的缓存区域
  2. 内存优化:根据服务器内存大小调整 keys_zone 大小
  3. SSD存储:如果可能,将缓存路径设置在SSD上
  4. 定期清理:设置 cron 任务定期清理过期缓存
  5. 缓存预热:对重要资源实施缓存预热策略

6. 注意事项

  1. 动态内容(如用户个性化数据)不应缓存
  2. 确保敏感数据不会被意外缓存
  3. 缓存时间设置要合理,避免用户看到过时内容
  4. 测试缓存配置对应用功能的影响

通过以上配置,可以显著提高网站的响应速度,减轻后端服务器负载,特别是在静态资源较多的场景下效果更为明显。