应直接在http块中配置gzip_types指定需压缩的MIME类型,匹配响应头Content-Type而非文件后缀,不支持通配符;必须包含text/html、text/plain、text/css、application/javascript、application/json;可选补充text/xml、image/svg+xml等;禁用已压缩的二进制类型如image/jpeg、video/mp4、font/woff2等。

直接在 http 块里配置 gzip_types,列出你要压缩的 MIME 类型即可。它匹配的是响应头中的 Content-Type 字段,不是文件后缀,也不支持通配符。
必须包含的核心类型
这些是实际部署中最基础、最安全、收益最高的文本类型:
-
text/html:HTML 页面本身,漏掉会导致首页完全不压缩(注意:
gzip_types是覆盖式配置,设了就会取代默认仅有的text/html) - text/plain:纯文本内容,如 API 返回的 raw 数据、日志片段
- text/css:CSS 文件体积通常较大,压缩比明显
-
application/javascript:现代标准 JS 类型,务必包含(
text/javascript可选,但非必需) - application/json:API 接口主流返回格式,结构规整,压缩效果好
按需补充的实用类型
加之前确认后端或 Nginx 实际输出的 Content-Type 与之严格一致(大小写、空格都不能错):
- text/xml、application/xml、application/xml+rss:用于 RSS、SOAP 或传统 XML 接口
-
image/svg+xml:SVG 是文本格式,压缩后体积常减少 50%–70%,但只对
.svg有效,.svgz已是 gzip 格式,不能再压 - application/vnd.api+json:符合 JSON:API 规范的响应
-
text/markdown 或 application/x-yaml:仅当后端明确返回这类类型,且内容为纯文本时才加入(需先在
mime.types中映射对应后缀)
明确不能加的类型
这些是已高度压缩的二进制格式,Gzip 不仅无效,还浪费 CPU、增加延迟,甚至导致浏览器解析异常:
- image/jpeg、image/png、image/gif、image/webp
- video/mp4、audio/mpeg、video/webm
- font/ttf、font/woff、font/woff2(WOFF2 本身含压缩,再压反而可能变大)
- application/pdf、application/zip 等本身带压缩的格式
配置示例与验证要点
典型写法(放在 http { } 块内):
gzip on; gzip_min_length 1024; gzip_comp_level 6; gzip_types text/plain text/css application/json application/javascript text/html text/xml image/svg+xml; gzip_vary on;
改完后务必执行三步:
-
sudo nginx -t检查语法是否正确 -
sudo nginx -s reload轻量重载配置 - 用
curl -H "Accept-Encoding: gzip" -I http://localhost/script.js查看响应头是否有Content-Encoding: gzip


















