nginx中gzip_types需在http/server/location块显式列出mime类型,仅依据content-type响应头匹配,不支持通配符;启用后完全覆盖默认text/html压缩行为,必须包含text/html等文本类型,禁用image/、video/等已压缩二进制格式,并通过curl验证content-encoding: gzip生效。

直接在 http、server 或 location 块中配置 gzip_types 指令,列出你希望压缩的 MIME 类型即可。Nginx 只依据响应头中的 Content-Type 字段匹配,完全不看文件后缀,也不支持通配符(如 text/*)。
必须显式写全基础文本类型
启用 gzip_types 后,Nginx 会**完全覆盖默认行为**(默认只压 text/html)。漏掉任何一项,对应资源就无法压缩:
- text/html —— 首页 HTML 不压缩,首屏加载明显变慢
- text/plain、text/css、text/javascript
- application/javascript —— 现代 JS 标准类型,不能省略
- application/json、application/xml、text/xml
- application/xml+rss、image/svg+xml —— SVG 是纯文本 XML,必须压缩
可按需添加现代格式类型
这些类型需确保内容确实是文本,并已在 mime.types 中正确定义:
-
text/markdown —— 需在
mime.types添加text/markdown md; -
application/typescript —— 对应
.ts文件,加application/typescript ts; - application/yaml、application/ld+json、application/vnd.api+json
-
text/wat —— WebAssembly 文本源码,不是二进制
.wasm
坚决排除已压缩的二进制格式
对 JPEG、PNG、WebP、AVIF、MP4、PDF、ZIP、WOFF2 等再套 Gzip,几乎不减体积,反而增加 CPU 和延迟,甚至可能略微增大传输量:
- 禁止加入:
image/jpeg、image/png、video/mp4、application/zip、application/pdf - 特别注意:
application/octet-stream是“兜底类型”,常代表未识别资源(如 .log、.md 返回此类型),误加会导致图片/PDF 被错误压缩,务必剔除 -
font/woff2本身含 Brotli 压缩,一般不建议再 Gzip;若真要加,需确认浏览器兼容且收益明确
验证是否真正生效
改完配置后,用真实请求检查响应头,别只信 nginx -t:
- 执行:
curl -I -H "Accept-Encoding: gzip" https://your-site.com/style.css - 确认返回头含
Content-Encoding: gzip且Content-Type: text/css - 若
.md返回的是application/octet-stream,即使写了text/markdown也无效 —— 先修正mime.types映射











