一、核心配置(推荐直接放在 http{} 全局块,所有站点生效)
打开 nginx 主配置文件,一般路径: /etc/nginx/nginx.conf
nginx
http {
# 开启gzip
gzip on;
# 低于此大小不压缩,单位bytes,建议1k,小文件压缩得不偿失
gzip_min_length 1024;
# 压缩级别 1-9,数字越大压缩率越高、CPU消耗越高,一般5足够
gzip_comp_level 5;
# 需要压缩的MIME类型
gzip_types
text/plain
text/css
text/xml
text/javascript
application/json
application/javascript
application/xml+rss
image/svg+xml;
# 是否在响应头添加 Vary: Accept-Encoding(建议开启,代理环境必备)
gzip_vary on;
# 代理服务器缓存压缩标识(反向代理场景开启)
gzip_proxied any;
# IE6及以下禁用gzip(兼容老浏览器)
gzip_disable "MSIE [1-6]\.";
# 缓冲区,默认即可,可选配置
gzip_buffers 4 16k;
}
如果你只想单个网站启用 ,把上面配置放到对应
server {}块内。
二、重要注意点
❌ 不要加图片格式(jpg/png/gif/webp) 图片本身已经压缩,再次 gzip 收益极小,浪费 CPU;只压缩文本类资源。
三、生效步骤
- 检查配置语法
bash
nginx -t
- 重载 Nginx(不中断服务)
bash
nginx -s reload
四、验证是否生效
方式 1 curl 测试
bash
curl -I -H "Accept-Encoding: gzip" https://你的域名/style.css
返回头部出现: Content-Encoding: gzip → 代表成功
方式 2 浏览器 F12
网络面板 → 选中资源 → 响应头查看 Content-Encoding: gzip
五、常见问题
- 配置写了不生效
-
确认配置放在
http{}/server{},不要放在location{}之外错误层级 -
nginx -t是否报错 -
有没有其他地方重复
gzip off;覆盖配置
-
反向代理后端返回不压缩 加上
gzip_proxied any; -
静态小文件不压缩 由
gzip_min_length 1024控制,小于 1KB 不会压缩,属于正常策略。