网站加载速度优化中,Gzip 压缩是投入低、收益明显的一项配置。HTML、CSS、JavaScript、JSON 等文本资源经过压缩后,传输体积通常能明显减少,用户打开页面更快,服务器带宽压力也更小。
Nginx 开启 Gzip 并不复杂,但要注意压缩类型、最小压缩大小、代理场景、缓存头和验证方式。本文整理 Nginx Gzip 常用配置、静态资源优化思路和常见问题排查。
Gzip 是什么
Gzip 是一种常见压缩算法。浏览器请求资源时,会通过请求头告诉服务器自己支持哪些压缩方式。服务器如果开启 Gzip,就可以返回压缩后的内容。
Accept-Encoding: gzip, deflate, br
浏览器收到压缩内容后会自动解压,用户不会感知解压过程,但页面加载体积会减少。
适合压缩的资源
Gzip 适合文本类资源,比如 HTML、CSS、JavaScript、JSON、XML、SVG。图片、视频、压缩包这类本身已经压缩过的资源,通常不需要再 Gzip。
text/html
text/css
application/javascript
application/json
对已经压缩过的图片继续压缩,收益很小,还会增加 CPU 消耗。

基础配置
常见 Gzip 配置可以放在 http 块中,对所有站点生效。
gzip on;
gzip_min_length 1024;
gzip_comp_level 5;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;
gzip_min_length 表示小于指定大小的响应不压缩,避免小文件压缩收益低。gzip_comp_level 表示压缩等级,通常 4 到 6 已经够用。
压缩等级
Gzip 压缩等级越高,压缩率越高,但 CPU 消耗也越大。不要盲目设置到 9。
gzip_comp_level 5;
对大多数网站来说,中等压缩等级已经能取得不错效果。更高等级带来的体积减少可能有限,却会增加服务器计算压力。
压缩类型
gzip_types 决定哪些 MIME 类型会被压缩。默认通常已经包含 HTML,其他资源需要显式配置。
gzip_types text/css application/javascript application/json image/svg+xml;
如果发现 CSS 或 JS 没有压缩,要检查响应的 Content-Type 是否在 gzip_types 中。
代理场景
如果 Nginx 作为反向代理,后端返回内容也可以由 Nginx 压缩。可以根据代理响应头控制压缩行为。
gzip_proxied any;
代理站点要注意缓存层和后端是否已经做了压缩,避免重复配置造成排查混乱。
Vary 响应头
建议开启 gzip_vary,让缓存系统知道同一个 URL 可能根据 Accept-Encoding 返回不同版本。
gzip_vary on;
这对 CDN 和代理缓存尤其重要,可以减少压缩版本和非压缩版本混淆的问题。
完整示例
一个比较通用的 Nginx Gzip 配置如下:
gzip on;
gzip_min_length 1024;
gzip_comp_level 5;
gzip_vary on;
gzip_proxied any;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;
修改配置后先执行语法检查,再重载 Nginx。
nginx -t
systemctl reload nginx
验证是否生效
可以使用浏览器开发者工具查看响应头,确认是否有 Content-Encoding: gzip。
Content-Encoding: gzip
也可以使用 curl 测试:
curl -H "Accept-Encoding: gzip" -I https://example.com/style.css
如果响应头中出现 Content-Encoding: gzip,说明压缩已经生效。
为什么没生效
Gzip 没生效常见原因包括:资源太小低于 gzip_min_length;资源类型不在 gzip_types 中;请求没有带 Accept-Encoding;配置写错位置;前面有 CDN 或缓存返回了旧响应。
排查时先确认 Nginx 配置已 reload,再确认响应头和资源 MIME 类型。
与 Brotli 的关系
Brotli 是另一种压缩算法,对文本资源压缩率通常更好,但需要浏览器和服务器模块支持。Gzip 兼容性更广,配置也更常见。
如果服务器支持 Brotli,可以同时使用 Brotli 和 Gzip,让浏览器自动选择支持的压缩方式。
WordPress 优化
WordPress 网站常见静态资源包括主题 CSS、插件 JS、SVG、JSON 接口响应等。Nginx 层开启 Gzip 后,可以减少这些文本资源体积。
如果同时使用缓存插件或 CDN,也要检查它们是否已经启用压缩,避免重复判断造成误解。
不要压缩所有内容
不是所有文件都适合压缩。JPEG、PNG、WebP、MP4、ZIP 等文件本身已经压缩,继续 Gzip 通常收益不大。对大文件盲目压缩还可能增加 CPU 压力。
常见错误
第一种错误是只写 gzip on,却没配置 gzip_types。第二种错误是把压缩等级调到 9。第三种错误是拿小文件测试,误以为没生效。第四种错误是 CDN 缓存未刷新。第五种错误是把图片压缩问题和 Gzip 混为一谈。
实践建议
Nginx 开启 Gzip 建议使用中等压缩等级,覆盖常见文本资源,开启 gzip_vary,并通过响应头验证是否生效。对 WordPress 站点来说,Gzip 是基础优化项,但仍要配合缓存、图片优化和数据库优化一起做。
Gzip 的价值在于用较低成本减少传输体积。配置清楚、验证到位,就能稳定提升静态资源加载速度。













暂无评论内容