Nginx 开启 Gzip 完整配置

一、核心配置(推荐直接放在 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;只压缩文本类资源。

三、生效步骤

  1. 检查配置语法
bash 复制代码
nginx -t
  1. 重载 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

五、常见问题

  1. 配置写了不生效
  • 确认配置放在 http{} / server{},不要放在 location{} 之外错误层级

  • nginx -t 是否报错

  • 有没有其他地方重复 gzip off; 覆盖配置

  1. 反向代理后端返回不压缩

    加上 gzip_proxied any;

  2. 静态小文件不压缩

    gzip_min_length 1024 控制,小于 1KB 不会压缩,属于正常策略。