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 不会压缩,属于正常策略。

相关推荐
李纲明2 小时前
WordPress 打开页面直接报 500 而不是白屏:先核伪静态与文件权限,再查服务器错误日志
nginx·wordpress·文件权限·伪静态·错误日志·devdiy·500错误
Csvn1 天前
Nginx 配置语法与上下文:一次搞懂继承、变量与用 map 替掉 if
后端·nginx
Csvn4 天前
安装、升级与目录结构
后端·nginx
Csvn6 天前
认识 Nginx
后端·nginx
陈希1237 天前
Nginx 从入门到能扛事:反向代理、负载均衡与 HTTPS 实战
nginx·https·负载均衡
木头左7 天前
【Nginx】内网服务源 IP 白名单实战:动态域名解析放行网段 + 端口接管零改造
运维·nginx·白名单·反向代理
skywalk81637 天前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
没差c7 天前
winsw将jar、nginx等注册为Windows服务
windows·nginx·jar
Lsetea9 天前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
枫叶轻语11 天前
【Nginx 从入门到实战 09】前后端统一入口:部署页面与接口的完整配置
nginx·全栈