主题
代理缓存与压缩
Nginx 可以通过代理缓存和 gzip 压缩显著提升网站性能,减少后端负载,加快客户端响应速度。
一、代理缓存配置
1. 定义缓存路径
nginx
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 中启用缓存
nginx
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 压缩减少网络传输量:
nginx
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 缓存区分压缩状态
三、优化建议
- 对动态请求缓存时,避免缓存敏感数据
- 配合
proxy_cache_use_stale提高高并发下的可用性 - 静态资源使用 gzip 压缩,并合理设置浏览器缓存
- 定期清理过期缓存,防止磁盘占满
通过代理缓存和 gzip 压缩,Nginx 可以显著提升网站性能,减轻后端压力,并加快客户端页面加载速度。