nginx gzip压缩功能默认内置,但启用预压缩(.gz文件自动匹配)需编译时添加--with-http_gzip_static_module,https环境还需--with-http_ssl_module,配置中须设gzip on、gzip_min_length、gzip_types等指令方可生效。

也就是说:gzip 基础压缩功能默认存在,但要真正用起来(尤其配合预压缩文件、SSL、现代协议),必须在 configure 阶段加参数。
确认并下载完整源码包
使用官方 tar.gz 包(非精简版或第三方打包),确保 `src/http/modules/` 下有 `ngx_http_gzip_module.c` 和 `ngx_http_gzip_static_module.c` 等文件:
- 访问 https://www.php.cn/link/9926b3ed9e0bc20b2ed7f32711b8b45f 下载稳定版,例如
nginx-1.24.0.tar.gz - 执行:
wget https://www.php.cn/link/9926b3ed9e0bc20b2ed7f32711b8b45fnginx-1.24.0.tar.gz && tar -zxvf nginx-1.24.0.tar.gz && cd nginx-1.24.0
运行 configure 启用 gzip 相关模块
核心参数必须包含:
-
--with-http_gzip_static_module:支持自动查找并返回已预压缩的.gz文件(如请求/app.js时返回/app.js.gz) -
--with-http_ssl_module:虽不直接属于 gzip,但现代生产环境必开;且部分浏览器在 HTTPS 下对 gzip 行为更严格,缺它可能导致压缩失效或警告 - 可选但推荐:
--with-http_v2_module(HTTP/2 支持,与 gzip 兼容性更好)
示例命令:
./configure --with-http_gzip_static_module --with-http_ssl_module --with-http_v2_module安装依赖并完成编译
gzip 静态模块依赖 zlib 开发库,否则 configure 可能报错或编译失败:
- CentOS/RHEL:
yum install -y zlib-devel - Ubuntu/Debian:
apt-get install -y zlib1g-dev
之后执行:
makesudo make install
安装完成后,可用 nginx -V 2>&1 | grep -o with-http_gzip 验证模块是否已编译进二进制。
配置文件里启用 gzip 功能
编译只是第一步,实际启用还需在 nginx.conf 的 http 块中添加运行时指令:
-
gzip on;—— 必须开启,否则不压缩 -
gzip_min_length 1024;—— 避免压缩过小响应(如 200 字节的 JSON)反而增大体积 -
gzip_types text/plain text/css application/javascript application/json text/xml application/xml image/svg+xml;—— 明确指定压缩类型,图片、字体等二进制文件一般不加 -
gzip_vary on;—— 让缓存代理知道该按Accept-Encoding分别缓存
改完记得 nginx -t 测试语法,再 nginx -s reload 生效。











