在 Linux + LNMP(Nginx + MySQL + PHP) 环境下,Gzip 压缩是由 Nginx 负责的,PHP 本身不需要单独开启。下面给你一套常用、安全、可用的配置方法。
一般 Nginx 默认已编译 ngx_http_gzip_module,可直接使用。
nginx -V 2>&1 | grep gzip
只要能看到 http_gzip_module 或没有报错,就支持。
通常位置是:
/etc/nginx/nginx.conf
或站点配置:
/etc/nginx/conf.d/*.conf
/etc/nginx/sites-enabled/*
http 或 server 块中添加✅ 推荐配置(通用)
http {
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 5;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
}
✅ 放在
http {}里即可对所有站点生效。
| 参数 | 说明 |
|---|---|
gzip on |
开启 Gzip |
gzip_min_length |
小于该大小不压缩(避免浪费 CPU) |
gzip_comp_level |
压缩级别(1–9,推荐 4–6) |
gzip_types |
需要压缩的 MIME 类型 |
gzip_vary |
让代理服务器识别是否支持 gzip |
gzip_disable |
禁止旧 IE 浏览器 |
⚠️ 不要压缩图片 / 视频
# 不推荐
gzip_types image/jpeg image/png;
nginx -t
systemctl restart nginx
或:
service nginx restart
打开开发者工具 → Network → 查看响应头:
Content-Encoding: gzip
curl -H "Accept-Encoding: gzip" -I http://你的域名
看到:
Content-Encoding: gzip
✅ 成功
检查:
gzip_typesgzip_min_length)proxy_pass 影响❌ 不需要
如果你用的是 LNMP.org 一键包:
/usr/local/nginx/conf/nginx.conf
直接修改即可,配置方式完全一样。
如果你愿意,可以告诉我:
我可以帮你给出最优配置方案。