SorryToPerson logo
返回
Nginx2026-04-15·8 分钟

Nginx 缓存与 CDN 结合实践

介绍 Nginx 缓存配置、CDN 集成和静态资源加速的常见方案。

Nginx 缓存与 CDN 结合实践

1. 启用缓存头

nginx
location ~* \.(css|js|png|jpg|jpeg|gif|svg)$ {
  expires 30d;
  add_header Cache-Control "public, max-age=2592000, immutable";
}
  • 为静态资源设置长缓存,提高浏览器命中率。
  • immutable 适合不常变更的文件。

2. 缓存中间件与代理缓存

nginx
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:10m max_size=10g inactive=60m;
proxy_cache_key "$scheme$proxy_host$request_uri";
nginx
location /api/ {
  proxy_cache mycache;
  proxy_cache_valid 200 30s;
  proxy_pass http://backend;
}

3. CDN 集成方式

  • origin 设为 Nginx 服务器。
  • 通过 Cache-Control 控制 CDN 缓存策略。
  • 使用 surrogate-controlstale-while-revalidate 提升容灾性能。

4. 缓存刷新与失效

  • 通过缓存键设计支持按路径或参数失效。
  • 对于动态内容,可设置较短 proxy_cache_valid

5. 压缩与缓存协同

  • 启用 gzip 避免 CDN 缓存多个压缩版本的问题。
  • 使用 gzip_static 可提升静态资源压缩效率。

6. CDN 与 HTTPS

  • CDN 与 Origin 之间建议也使用 HTTPS。
  • 确保 Nginx 配置 TLS 有效证书与安全协议。

7. 故障与回退

  • 当 CDN 缓存错误时,proxy_cache_use_stale 可继续返回旧缓存。
  • 对高并发场景使用 proxy_cache_lock 防止缓存击穿。

8. 监控缓存效果

  • 分析 X-CacheX-Cache-Status 响应头。
  • 观察命中率与回源率,调整缓存策略。
Nginx缓存CDN