Appearance
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使用浏览器测试
- 打开浏览器开发者工具
- 查看Network标签
- 检查响应头是否包含
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模块,减少传输数据量,提高网站性能。