插件窝 干货文章 nginx gzip动态压缩和静态压缩怎么配置

nginx gzip动态压缩和静态压缩怎么配置

压缩 Gzip 静态 文件 788    来源:    2025-04-27

Nginx Gzip 压缩配置指南

Nginx 支持两种类型的 Gzip 压缩:动态压缩和静态压缩。下面我将详细介绍这两种压缩方式的配置方法。

动态压缩 (On-the-fly Compression)

动态压缩是在请求时实时压缩内容,适用于动态生成的内容。

http {
    # 开启gzip压缩
    gzip on;

    # 设置压缩级别(1-9),6是推荐的平衡点
    gzip_comp_level 6;

    # 设置最小压缩文件大小,小于此值不压缩
    gzip_min_length 1024;

    # 设置压缩缓冲区大小
    gzip_buffers 16 8k;

    # 设置需要压缩的MIME类型
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    # 对于代理请求,根据"Via"请求头决定是否压缩
    gzip_proxied any;

    # 在响应头中添加Vary: Accept-Encoding,避免代理服务器缓存问题
    gzip_vary on;

    # 禁用对IE6的gzip压缩(IE6某些版本不支持gzip)
    gzip_disable "MSIE [1-6]\.";
}

静态压缩 (Pre-compressed Static Files)

静态压缩是预先压缩好静态文件,Nginx 直接发送已压缩的文件,减少 CPU 开销。

http {
    # 开启gzip_static模块
    gzip_static on;

    # 如果客户端不支持gzip,则发送未压缩版本
    gunzip on;

    # 其他gzip配置(可选)
    gzip_comp_level 6;
    gzip_min_length 1024;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

使用静态压缩的步骤

  1. 预压缩文件: 在部署前,使用gzip预先压缩静态文件:

    gzip -k -9 style.css  # -k保留原文件,-9最高压缩级别
    

    这会生成 style.css.gz 文件

  2. 文件结构: 确保原始文件和压缩文件在同一目录:

    /var/www/html/
    ├── style.css
    └── style.css.gz
    

动态压缩 vs 静态压缩

特性 动态压缩 静态压缩
CPU 使用 高 (每次请求时压缩) 低 (只压缩一次)
适用场景 动态内容 静态内容
响应时间 稍慢 (需要实时压缩) 更快 (直接发送预压缩文件)
存储空间 节省 (不存储压缩文件) 需要额外空间存储压缩文件

最佳实践建议

  1. 混合使用:对静态内容使用静态压缩,动态内容使用动态压缩
  2. 监控效果:使用工具测试压缩效果和性能影响
  3. 调整级别:根据服务器性能和带宽情况调整压缩级别
  4. 缓存策略:合理配置缓存头,避免重复压缩

希望这些配置信息对您有所帮助!如需进一步优化,可以根据实际访问模式和服务器资源进行调整。