Skip to content

Gzip模块

Gzip模块用于压缩响应内容,减少传输数据量。

基本配置

启用Gzip

nginx
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss;

完整配置

生产环境配置

nginx
http {
    gzip on;
    gzip_vary on;
    gzip_min_length 1000;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss image/svg+xml;
    gzip_disable "msie6";

    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_proxied any;
}

常用指令

gzip

nginx
gzip on;

说明:

  • 启用Gzip压缩
  • 推荐启用

gzip_vary

nginx
gzip_vary on;

说明:

  • 添加Vary头
  • 告诉代理服务器缓存压缩版本
  • 推荐启用

gzip_min_length

nginx
gzip_min_length 1000;

说明:

  • 最小压缩文件大小
  • 小于该值不压缩
  • 推荐值:1000

gzip_comp_level

nginx
gzip_comp_level 6;

说明:

  • 压缩级别(1-9)
  • 级别越高压缩率越高,但CPU消耗越大
  • 推荐值:6

gzip_types

nginx
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss;

说明:

  • 压缩的MIME类型
  • 推荐压缩文本类型

gzip_disable

nginx
gzip_disable "msie6";

说明:

  • 禁用特定浏览器的压缩
  • IE6不支持Gzip
  • 推荐禁用IE6

完整示例

生产环境配置

nginx
http {
    gzip on;
    gzip_vary on;
    gzip_min_length 1000;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss image/svg+xml;
    gzip_disable "msie6";

    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_proxied any;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
}

测试Gzip

使用curl测试

bash
curl -I -H "Accept-Encoding: gzip" http://example.com/

预期结果:

Content-Encoding: gzip

使用浏览器测试

  1. 打开浏览器开发者工具
  2. 查看Network标签
  3. 检查响应头是否包含Content-Encoding: gzip

常见问题

Gzip未生效

原因: gzip未启用或配置错误

解决: 检查gzip配置

nginx
gzip on;
gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss;

压缩率低

原因: gzip_comp_level设置过低

解决: 提高压缩级别

nginx
gzip_comp_level 6;

总结

Gzip模块的关键点:

  • gzip on:启用Gzip压缩
  • gzip_vary:添加Vary头
  • gzip_min_length:设置最小压缩文件大小
  • gzip_comp_level:设置压缩级别
  • gzip_types:设置压缩的MIME类型
  • gzip_disable:禁用特定浏览器的压缩

合理配置Gzip模块,减少传输数据量,提高网站性能。