启用 gzip_static 可让 Nginx 直接分发预压缩的 .gz 文件,避免运行时压缩开销,提升静态资源响应速度;需满足 Nginx 编译含对应模块、文件已预压缩且同名同目录、客户端支持 gzip 等前提,并在 http 块中配置 gzip_static on。

启用 gzip_static 可让 Nginx 直接分发预压缩的 .gz 文件,避免运行时压缩开销,提升静态资源响应速度。它不替代 gzip 指令,而是优先查找同名的已压缩文件(如请求 /style.css 时,若存在 /style.css.gz 且客户端支持 gzip,则直接返回该文件)。
前提条件与准备
需确保以下几点已就绪:
- Nginx 已编译启用
--with-http_gzip_static_module(主流发行版包通常默认包含) - 静态文件(如 CSS、JS、SVG、JSON 等)已用
gzip命令提前压缩,生成对应.gz文件,权限与原文件一致 - 原文件与
.gz文件位于同一目录,名称严格匹配(例如app.js和app.js.gz) - 客户端请求头含
Accept-Encoding: gzip(现代浏览器默认携带)
在 http 块中启用 gzip_static
在 http 块(而非 server 或 location)中添加以下配置即可全局生效:
gzip_static on;
该指令默认为 off。设为 on 后,Nginx 会在处理静态文件请求时自动检查同名 .gz 文件是否存在、是否可读,并在满足条件时直接返回它(跳过内容编码流程)。注意:gzip_static 不依赖 gzip_types,但建议仍保留相关设置以兼容未预压缩的资源。
配合 gzip 指令使用更稳妥
推荐同时启用常规 gzip 压缩作为兜底:
gzip on; gzip_types text/plain text/css application/javascript application/json image/svg+xml; gzip_vary on;
这样当某个文件尚未预压缩(无 .gz 文件),或客户端不支持 gzip 时,Nginx 仍能动态压缩后返回;而有预压缩文件时,gzip_static 会优先生效,性能更高。注意:gzip_static 仅对 GET 和 HEAD 请求生效,且不处理代理缓存逻辑,需自行确保 .gz 文件时效性。
验证是否生效
可通过 curl 命令快速验证:
curl -H "Accept-Encoding: gzip" -I https://example.com/style.css
若响应头中出现 Content-Encoding: gzip 且 Content-Length 接近 style.css.gz 的大小,说明 gzip_static 已起作用。也可用浏览器开发者工具查看网络请求的响应头和传输大小对比。

















