gzip_types 作用是按 content-type 响应头启用压缩,非文件后缀;必含 text/html、text/plain、text/css、text/javascript、application/javascript、application/json 等,漏则 html 不压缩;禁用已压缩的二进制类型;需 nginx -t 校验、reload 重载,并用 curl 验证响应头与大小。

gzip_types 的作用不是“压哪些后缀”,而是“对哪些 Content-Type 响应头启用压缩”。它只看响应头里的 Content-Type 字段,不解析文件名或后缀。配置写错、漏写、类型映射缺失,都会导致本该压缩的资源没被压。
必须显式包含的核心文本类型
gzip_types 是覆盖式指令——一旦设置,Nginx 默认的 text/html 就会被完全替代。漏掉它,首页 HTML 就不会压缩,首屏加载直接变慢。
- text/html:HTML 页面主体,必加
- text/plain:纯文本(如 API 日志、调试输出)
- text/css:CSS 文件
- text/javascript 和 application/javascript:JS 资源需同时覆盖新旧 MIME 标准
- application/json:API 接口返回,压缩效果通常超 60%
- text/xml、application/xml、application/xml+rss:XML 类数据
- image/svg+xml:SVG 是文本格式,务必压缩
可选但需验证的类型
这些类型是否有效,取决于你是否在 mime.types 中正确定义了对应后缀,且后端/静态服务确实返回了匹配的 Content-Type。
-
text/markdown:用于 .md 渲染页,需先在 mime.types 添加
text/markdown md; - application/typescript:TS 源码直出场景,同样需补充 mime 映射
- application/font-woff2:WOFF2 本身已压缩,多数情况不建议再 Gzip;若强需求,须确认浏览器兼容性
明确要排除的类型
添加这些类型不仅几乎不减体积,还会白耗 CPU、增加延迟,甚至引发解码异常。
- image/jpeg、image/png、image/gif、image/webp、image/avif
- video/mp4、video/webm、audio/mpeg、audio/ogg
- application/zip、application/pdf、application/octet-stream(泛型二进制,风险高)
- font/ttf、font/otf、application/vnd.ms-fontobject
验证与生效要点
配置写完只是第一步,真正起效需要三重确认:
- 运行
nginx -t检查语法,再用nginx -s reload重载(不是 restart) - 用 curl 实测:
curl -I -H "Accept-Encoding: gzip" https://yoursite.com/app.js,确认响应头含Content-Encoding: gzip且Content-Type匹配你写的类型 - 检查资源实际大小:若响应体小于
gzip_min_length(建议设为 1024),也不会压缩











