Nginx 全局启用 Gzip 压缩可显著减小 HTML、CSS、JS、JSON 等文本响应体积,提升加载速度并降低带宽;需合理配置 gzip on、gzip_types、gzip_vary、gzip_comp_level 6、gzip_min_length 1024 等参数,并排除图片等已压缩资源,配合缓存与响应头验证生效。

在 Nginx 中,通过 http 块全局启用 Gzip 压缩,能显著减小文本类响应体(如 HTML、CSS、JS、JSON)的传输体积,加快页面加载速度,降低带宽消耗。关键在于合理配置压缩级别、类型和条件,避免过度压缩影响 CPU 性能或压缩无效资源。
启用 Gzip 的基础配置
在 nginx.conf 的 http 块内添加以下指令即可全局开启:
-
gzip on;—— 启用 Gzip 压缩 -
gzip_types text/plain text/css application/javascript application/json application/xml+rss text/xml;—— 指定需压缩的 MIME 类型(务必包含常见前端资源) -
gzip_vary on;—— 向响应头添加Vary: Accept-Encoding,确保代理/CDN 正确缓存压缩与未压缩版本
控制压缩效率与资源开销
Gzip 不是开得越狠越好。默认 gzip_comp_level 1 压缩率低但快,6 是平衡点,9 几乎不提升体积却大幅增加 CPU 负担:
- 推荐设为
gzip_comp_level 6; - 避免对已压缩资源(如图片、视频、woff2 字体)重复压缩:
gzip_disable "msie6\|png\|jpg\|jpeg\|gif\|ico\|webp";(注意:实际应结合gzip_types排除,gzip_disable主要用于旧浏览器兼容) - 设置最小响应体大小,防止小文件得不偿失:
gzip_min_length 1024;(单位字节,1KB 起压)
配合静态资源缓存效果更佳
Gzip 压缩与缓存协同工作才能发挥最大价值:
- 确保
gzip_vary on;已开启,否则 CDN 或反向代理可能缓存错误版本 - 静态文件建议搭配
expires和add_header Cache-Control,让浏览器长期缓存压缩后的内容 - 若使用了
sub_filter或 SSI 等动态内容处理,注意 Gzip 会在过滤之后执行,不影响功能
验证是否生效
部署后用浏览器开发者工具检查响应头:
- 访问一个 JS 或 CSS 文件,查看响应头中是否有
Content-Encoding: gzip - 对比压缩前后
Content-Length,通常可减少 60%–80% - 用
curl -H "Accept-Encoding: gzip" -I https://yoursite.com/style.css快速测试

















