Nginx配置gzip压缩,提高网站加载速度
时间:2026-10-5 07:59 作者:emer 分类: 无
前言
网站加载慢,很大原因是没开压缩。CSS、JS 文件动辄几百 KB,开了 gzip 之后能压缩到原来的 1/3,加载速度提升明显。本文就讲一下怎么在 Nginx 里配置 gzip 压缩。
为什么要开 gzip
举个例子:
- 一个 CSS 文件原始大小 100KB
- 开了 gzip 之后变成 20KB
- 传输体积减少 80%
浏览器收到压缩内容后自动解压,用户无感知。
基础配置
在 nginx.conf 的 http 块里加上:
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_vary on;
}
配置项说明
gzip on:
开启 gzip 压缩。
gzip_types:
哪些类型的文件需要压缩。
text/plain:文本text/css:CSSapplication/json:JSONapplication/javascript:JSimage/svg+xml:SVG 图片
gzip_min_length:
小于 1KB 的文件不压缩(压缩本身也占 CPU,小文件不值得压)。
gzip_comp_level:
压缩级别,1 到 9,6 比较合适(越大压得越狠,但越占 CPU)。
gzip_vary on:
给响应头加 Vary: Accept-Encoding,告诉 CDN 和缓存,这个内容是压缩过的。
完整示例
http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_vary on;
gzip_buffers 16 8k;
gzip_http_version 1.1;
}
检查并重载
nginx -t
systemctl reload nginx
验证 gzip 是否生效
用 curl 测试
curl -H "Accept-Encoding: gzip" -I https://www.example.com
如果返回头里有:
Content-Encoding: gzip
说明 gzip 生效了。
用浏览器 F12 测试
打开浏览器 F12 → Network → 点一个 JS/CSS 文件 → Response Headers,看有没有 Content-Encoding: gzip。
注意事项
不要压缩图片
JPG、PNG 这些图片本身已经是压缩过的,再压 gzip 没什么效果,还浪费 CPU。所以 gzip_types 里不要加 image/jpeg、image/png 这些。
不要压缩太小的文件
太小的文件(比如小于 1KB)压缩完反而可能变大,所以用 gzip_min_length 过滤掉。
压缩级别不要太高
gzip_comp_level 设到 9 没意义,压不了多少,CPU 占用还高。6 就够了。
常见坑
坑1:开了 gzip 但没生效
配置写了,但浏览器看到的还是没压缩的。
排查:
- 看文件大小是不是小于
gzip_min_length - 看
gzip_types里有没有包含这种类型 - 看浏览器请求头里有没有
Accept-Encoding: gzip
坑2:HTML 没压缩
只压缩了 CSS 和 JS,HTML 没压缩。
原因: gzip_types 里没写 text/html。
注意: text/html 是默认就压缩的,不用写在 gzip_types 里。
坑3:CDN 缓存了没压缩的版本
开了 gzip,但 CDN 上缓存的还是旧的没压缩的文件。
解决: 清一下 CDN 缓存,或者等 CDN 自动更新。
总结
gzip 配置很简单,就几行:
| 配置项 | 推荐值 | 作用 |
|---|---|---|
gzip |
on |
开启压缩 |
gzip_types |
text/css application/javascript ... | 压缩哪些文件 |
gzip_min_length |
1k |
小于多少不压 |
gzip_comp_level |
6 |
压缩级别 |
gzip_vary |
on |
加 Vary 头 |
开了 gzip 网站加载速度立马快一截,零成本优化,一定要开。
遇到问题加QQ23979811 协助处理