插件窝 干货文章 Nginx gzip压缩配置,减少网页加载时间

Nginx gzip压缩配置,减少网页加载时间

application 压缩 Gzip javascript 733    来源:    2025-04-16

Nginx Gzip压缩配置指南

Gzip压缩是减少网页加载时间、节省带宽的有效方法。以下是Nginx中配置Gzip压缩的详细方案:

基本配置

在nginx.conf的http模块中添加以下配置:

gzip on;  # 开启gzip压缩
gzip_min_length 1k;  # 最小压缩文件大小
gzip_buffers 4 16k;  # 压缩缓冲区
gzip_http_version 1.1;  # 压缩版本
gzip_comp_level 6;  # 压缩级别1-9,6是较好的平衡点
gzip_types text/plain text/css text/javascript application/javascript application/x-javascript application/json application/xml application/xml+rss text/xml image/svg+xml;  # 压缩类型
gzip_vary on;  # 根据客户端Accept-Encoding头启用压缩
gzip_disable "MSIE [1-6]\.";  # 对不支持gzip的IE6以下禁用

优化建议

  1. 压缩级别选择

    • 1-3:快速压缩,压缩率较低
    • 4-6:较好的平衡点(推荐)
    • 7-9:最高压缩率,但CPU消耗大
  2. 压缩类型扩展

    gzip_types text/plain text/css text/javascript application/javascript application/x-javascript 
              application/json application/xml application/xml+rss text/xml 
              image/svg+xml font/ttf font/otf font/woff font/woff2;
    
  3. 预压缩静态文件

    • 对于不常变更的静态文件,可以预先压缩:
    gzip -k -9 style.css  # 生成style.css.gz
    
  4. Brotli压缩(Nginx 1.11.5+):

    brotli on;
    brotli_comp_level 6;
    brotli_types text/plain text/css text/javascript application/javascript application/x-javascript 
                application/json application/xml application/xml+rss text/xml 
                image/svg+xml font/ttf font/otf font/woff font/woff2;
    

完整示例

http {
    # ...其他配置...

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/javascript application/javascript 
               application/x-javascript application/json application/xml 
               application/xml+rss text/xml image/svg+xml font/ttf 
               font/otf font/woff font/woff2;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

    # 如果有Brotli支持
    brotli on;
    brotli_comp_level 6;
    brotli_types text/plain text/css text/javascript application/javascript 
                 application/x-javascript application/json application/xml 
                 application/xml+rss text/xml image/svg+xml font/ttf 
                 font/otf font/woff font/woff2;

    # ...其他配置...
}

验证配置

  1. 检查配置语法:

    nginx -t
    
  2. 重新加载配置:

    nginx -s reload
    
  3. 验证压缩是否生效:

    • 使用curl检查响应头: bash curl -I -H "Accept-Encoding: gzip" http://yourdomain.com
    • 应看到Content-Encoding: gzip响应头

注意事项

  1. 图片文件(JPEG/PNG等)通常已经是压缩格式,不需要再次压缩
  2. 动态内容每次请求都需要压缩,会增加服务器CPU负载
  3. 过高的压缩级别可能得不偿失,建议测试不同级别对性能的影响

通过合理配置Gzip压缩,通常可以减少60-70%的文本资源传输量,显著提高网页加载速度。