Nginx开启Gzip压缩可使HTML、CSS、JS等文本资源体积减少60%–90%,需在http块配置gzip on、gzip_min_length 1k、合理设置gzip_comp_level和gzip_types,避免压缩已压缩文件如JPEG/PNG。

开启 Gzip 压缩是提升 Nginx 静态资源加载速度最直接、见效最快的方式之一。它不改变前端代码,也不依赖 CDN,仅通过服务器端压缩文本类资源(如 HTML、CSS、JS),就能让传输体积减少 60%–90%,尤其对带宽受限或移动网络用户效果明显。
哪些资源适合开启 Gzip 压缩
压缩效果取决于文件类型本身是否可压缩:
- 强烈推荐压缩:HTML、CSS、JavaScript、JSON、XML、SVG、纯文本(text/plain)——这些是明文格式,Gzip 效果极佳;
- 不建议压缩:JPEG、PNG、GIF、WebP 等图片,以及 ZIP、MP4、PDF 等已压缩格式——它们本身经过专用算法压缩,再套一层 Gzip 几乎不减体积,反而白耗 CPU;
- 谨慎压缩:字体文件(如 WOFF、TTF)和小文件(
Nginx 中启用 Gzip 的核心配置
在 nginx.conf 的 http 块内添加以下配置(非 server 或 location 块):
gzip on;
gzip_min_length 1024;
gzip_comp_level 5;
gzip_types text/plain text/css application/javascript application/json application/xml+rss image/svg+xml;
gzip_vary on;
说明:
-
gzip_min_length 1024表示只压缩大于 1 KB 的响应体,避免小文件“越压越大”; -
gzip_comp_level 5是性能与压缩率的平衡点,1–4 更快但略大,6–9 更小但更耗 CPU; -
gzip_types必须显式列出 MIME 类型,Nginx 不会默认压缩 JS 或 CSS,漏写会导致部分资源未压缩; -
gzip_vary on会让响应头带上Vary: Accept-Encoding,确保代理/CDN 正确缓存压缩与非压缩版本。
验证压缩是否生效
两种常用方式,结果一致即可确认成功:
-
浏览器开发者工具:打开 Network 标签页 → 刷新页面 → 点击任意 .js 或 .css 请求 → 查看 Response Headers 中是否有
Content-Encoding: gzip; -
命令行 curl 测试:
curl -I -H "Accept-Encoding: gzip" https://yoursite.com/style.css,响应头中出现Content-Encoding: gzip即为有效。
常见问题与优化建议
配置后仍不生效?注意这几个易错点:
- 确认 Nginx 已编译
--with-http_gzip_module(运行nginx -V 2>&1 | grep gzip检查); - 不要把 Gzip 配置写在
server或location块里——除非明确需要局部关闭,否则应统一放在http块; - IE6 用户可加
gzip_disable "MSIE [1-6]\.";避免兼容性问题(现代站点通常无需考虑); - 若使用了反向代理(如 CDN 或负载均衡),需确保中间层未移除
Vary头或强制关闭压缩。











