Nginx Gzip需在http块中配置,启用后HTML/CSS/JS压缩率60%–80%,浏览器自动解压;关键指令包括gzip on、min_length 1024、comp_level 6、types明确指定三类、vary on;禁用IE6、设buffers和http_version可增强兼容性;JPG/PNG/GIF/PDF等已压缩格式及超小文件无需Gzip。

直接在 Nginx 的 http 块中配置 Gzip,就能让 HTML、CSS 和 JS 文件自动压缩传输,通常体积减少 60%–80%,浏览器收到后会自动解压,完全无需前端改动。
必须放在 http 块里的基础配置
所有 gzip 指令都要写在 http { } 大括号内(不能塞进 server 或 location),否则大概率不生效:
-
开启压缩:
gzip on; -
最小压缩阈值:
gzip_min_length 1024;(避免压缩极小文件反而变大) -
压缩等级:
gzip_comp_level 6;(4–6 是 CPU 开销与压缩率的合理平衡点) -
明确指定类型:
gzip_types text/html text/css application/javascript;(务必包含这三类,不建议用*) -
兼容缓存代理:
gzip_vary on;(确保 CDN 或反向代理能正确区分压缩/未压缩版本)
推荐补充的实用参数
这些不是必需项,但加上后更健壮:
-
禁用老旧 IE:
gzip_disable "msie6";(避免 IE6 解压异常) -
缓冲区设置:
gzip_buffers 16 8k;(适配常见响应体大小,减少内存碎片) -
HTTP 版本控制:
gzip_http_version 1.1;(默认值,显式写出更清晰)
验证是否生效的方法
改完配置后重载 Nginx(nginx -s reload),再用 curl 测试:
立即学习“Java免费学习笔记(深入)”;
curl -H "Accept-Encoding: gzip" -I https://yoursite.com/style.css- 如果响应头里出现
Content-Encoding: gzip,说明压缩已启用 - 对比压缩前后大小:可加
-w "\nSize: %{size_download}\n"查看实际传输字节数
哪些文件不该压、为什么
Gzip 对已压缩的二进制格式基本无效,还白耗 CPU:
- JPG / PNG / GIF:本身是压缩格式,gzip 后体积变化几乎为 0,甚至略增
- PDF / ZIP / WebP:同理,二次压缩无意义
-
小图标(如 1KB 以下的 favicon.ico):低于
gzip_min_length阈值,也不压



















