在nginx的server块中启用gzip压缩是最灵活、推荐的按站点控制方式,适用于多域名共用服务器且需差异化压缩策略的场景;必须置于server顶层,配合gzip_min_length 1024、gzip_comp_level 6、显式gzip_types(含text/html等)、gzip_vary on及gzip_http_version 1.1等关键参数,并避免对已压缩格式启用,验证需检查content-encoding: gzip响应头。

在 Nginx 的 server 块中启用压缩,是最灵活、最推荐的按站点控制方式。它不干扰其他站点,适合多域名环境或需要差异化压缩策略的场景。
直接写在 server 块顶部(推荐)
把 gzip 指令放在 server { ... } 内部、所有 location 块之前即可生效。例如:
gzip on;
gzip_min_length 1024;
gzip_comp_level 6;
gzip_types text/plain text/css application/javascript application/json text/xml application/xml application/xml+rss text/javascript image/svg+xml;
gzip_vary on;
gzip_http_version 1.1;
关键参数说明与建议值
- gzip on:必须开启,否则其余配置无效
- gzip_min_length 1024:只压缩 ≥1KB 的响应体;太小的文件压缩反而增加开销
- gzip_comp_level 6:压缩级别 1–9,6 是速度与体积的较好平衡点
-
gzip_types:务必包含
text/html(默认已隐含),显式列出常用类型更稳妥;image/svg+xml可压缩 SVG 文本内容,但 PNG/JPG 等二进制图不生效 - gzip_vary on:让代理/CDN 知道响应可能有不同编码,避免缓存混淆
注意作用域和常见错误
- 不能写在
location块内部(除非你明确只想压缩某个路径,但一般不推荐) - 不要遗漏
gzip_http_version 1.1,否则部分旧客户端可能无法正确处理 - 如果用了反向代理(如前端是 CDN 或负载均衡),建议加
gzip_proxied any;,确保代理传来的请求也能被压缩 - 若需兼容极老浏览器(如 IE6),可加
gzip_disable "MSIE [1-6]\.";
验证是否生效
修改后执行 nginx -t && nginx -s reload,然后用 curl 测试:
curl -H "Accept-Encoding: gzip" -I https://your-domain.com/test.js
看到响应头含 Content-Encoding: gzip 即表示成功。











