gzip_types 指令需显式列出所有需压缩的 mime 类型,如 text/html、text/plain、text/css 等,不可用通配符;必须确保包含 text/html 以免 html 失去压缩,且需同步更新 mime.types 文件以支持自定义扩展名。

在 Nginx 中,gzip_types 指令用于指定哪些 MIME 类型的响应内容会被启用 Gzip 压缩。默认只压缩 text/html,若需压缩 JS、CSS、JSON、SVG 等常见静态资源,必须显式添加对应类型。
明确列出常用 MIME 类型
不要依赖通配符或模糊匹配,Nginx 不支持 gzip_types text/* 这类写法。应逐个列出实际需要压缩的类型,例如:
-
text/plain(纯文本) -
text/css(CSS 文件) -
text/javascript(JS 文件,注意旧版可能用application/javascript) -
application/json(API 返回的 JSON) -
application/xml(XML 接口或 RSS) -
image/svg+xml(SVG 矢量图) -
application/font-woff2(WOFF2 字体,部分浏览器支持压缩)
注意 MIME 类型与文件扩展名的映射关系
Nginx 依据 mime.types 文件(通常位于 /etc/nginx/mime.types)将后缀名映射为 MIME 类型。若自定义了静态资源后缀(如 .ts、.md),需先在 mime.types 中补充对应类型,再在 gzip_types 中加入该类型,否则压缩不会生效。
例如,要压缩 .md 文件,先确认其 MIME 类型是 text/markdown,然后在 mime.types 中添加:
types {
text/markdown md;
}
再在 gzip_types 中加入 text/markdown。
避免覆盖默认类型导致 HTML 不压缩
gzip_types 是“覆盖式”配置:一旦设置,就会完全替代默认值(仅 text/html)。如果忘记包含 text/html,页面 HTML 将不再被压缩。
推荐写法(确保 HTML 始终压缩):
gzip_types text/html text/plain text/css text/javascript application/javascript application/json application/xml image/svg+xml;
验证是否生效
重启 Nginx 后,用 curl 检查响应头:
curl -H "Accept-Encoding: gzip" -I https://example.com/style.css
若返回中含 Content-Encoding: gzip,且 Content-Length 明显变小,说明配置成功。也可用浏览器开发者工具的 Network 面板查看响应头和传输大小。










