代理缓存与压缩

Nginx 可以通过代理缓存和 gzip 压缩显著提升网站性能,减少后端负载,加快客户端响应速度。

一、代理缓存配置

1. 定义缓存路径

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;

`

  • levels:缓存目录层级
  • keys_zone:共享内存区,用于存储缓存键
  • inactive:缓存多久未访问自动过期
  • max_size:缓存总大小

2. 在 location 中启用缓存

location / {
    proxy_cache my_cache;
    proxy_pass http://backend;
    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;
    add_header X-Cache-Status $upstream_cache_status;
}
  • proxy_cache_valid:设置不同响应码的缓存时间
  • proxy_cache_use_stale:后端异常时使用过期缓存
  • $upstream_cache_status:缓存命中状态(HIT / MISS / BYPASS)

二、Gzip 压缩配置

启用 gzip 压缩减少网络传输量:

http {
    gzip on;
    gzip_min_length 1024;
    gzip_types text/plain text/css application/javascript application/json text/xml application/xml application/xml+rss text/javascript;
    gzip_comp_level 5;
    gzip_vary on;
}
  • gzip_types:指定压缩 MIME 类型
  • gzip_comp_level:压缩等级(1-9,推荐 4~6 平衡性能与压缩比)
  • gzip_vary on:让代理和 CDN 缓存区分压缩状态

三、优化建议

  1. 对动态请求缓存时,避免缓存敏感数据
  2. 配合 proxy_cache_use_stale 提高高并发下的可用性
  3. 静态资源使用 gzip 压缩,并合理设置浏览器缓存
  4. 定期清理过期缓存,防止磁盘占满

通过代理缓存和 gzip 压缩,Nginx 可以显著提升网站性能,减轻后端压力,并加快客户端页面加载速度。