Nginx Gzip 压缩提速配置详解

Nginx Gzip 压缩提速配置详解

一、压缩为什么能提速

网页里的 HTML、CSS、JS、JSON 都是文本,重复字符多,直接传输体积大。Gzip 在服务器端把响应压缩成更小的数据包,浏览器收到后自动解压,文本资源通常能压缩到原来的 20%~40%,减少带宽占用、加快首屏加载。图片、压缩包本身已压缩,不需要再 Gzip。

二、基础配置

在 nginx.conf 的 http 块开启:

gzip on;
gzip_min_length 1k;               # 小于1KB不压缩,避免小文件得不偿失
gzip_comp_level 6;                 # 压缩等级1~9,6性价比最高
gzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;
gzip_vary on;                      # 响应头加 Vary: Accept-Encoding,区分是否支持压缩

gzip on 总开关;gzip_types 指定要压缩的 MIME 类型,默认只压 text/html,JS、CSS、JSON 必须手动加上。

三、关键参数说明

  • gzip_min_length:只压缩超过该大小的响应,过小文件压缩收益低于 CPU 消耗;
  • gzip_comp_level:等级越高压缩率越大但 CPU 越高,生产用 5~6,不要盲目拉满;
  • gzip_buffers:压缩缓冲区大小,默认即可;
  • gzip_vary on:告诉 CDN 和代理按 Accept-Encoding 分别缓存,避免给不支持压缩的客户端发压缩内容。

四、静态资源与 Brotli

对已经预压缩的文件(如 .gz 版本)可直接用 gzip_static on,跳过实时压缩,减少 CPU:

gzip_static on;

现代浏览器还支持 Brotli,压缩率比 Gzip 更高,Nginx 需额外模块,生产可作为增强,Gzip 保证兼容性。

五、验证是否生效

浏览器 F12 Network 看响应头:

Content-Encoding: gzip

存在该头且资源体积明显变小即生效。也可用 curl:

curl -I -H "Accept-Encoding: gzip" https://example.com/app.js

六、常见误区

  1. 只开 gzip on 不配 gzip_types,JS、CSS 没被压缩;
  2. 压缩等级拉到 9,CPU 飙升收益却很小;
  3. 对 PNG、JPG、视频、zip 也压缩,纯属浪费;
  4. 忘记 gzip_vary,代理缓存把压缩版发给不支持的浏览器;
  5. 小文件也压,增加计算开销反而变慢。

七、总结

Gzip 配置核心是开关、阈值、等级、类型四件套:开总开关、设最小长度、选 6 级、补齐文本类型并加 Vary。配合 gzip_static 预压缩和 Brotli 增强,用少量 CPU 换取大幅带宽节省,是 Nginx 站点提速的基础优化项。


emer 发布于  2026-11-14 07:26 
'); })();