Nginx配置gzip压缩,提升网站加载速度
时间:2026-10-7 07:37 作者:emer 分类: 无
前言
网站打开慢?Nginx 开个 gzip 压缩,能把传输体积压缩 70% 以上,用户打开快很多,还省带宽。对 SEO 也有帮助。
什么是 gzip 压缩
gzip 是一种压缩算法。Nginx 把 HTML、CSS、JS 等文本文件压缩后再发给浏览器,浏览器收到后自动解压。
比如一个 100KB 的 CSS 文件,压缩后可能只有 20KB。
配置方法
在 Nginx 配置文件里加 gzip 相关配置。
基础配置
gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
完整示例
server {
listen 80;
server_name www.example.com;
root /var/www/html;
index index.html;
# gzip 压缩
gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
}
参数说明
| 参数 | 说明 |
|---|---|
gzip on |
开启 gzip |
gzip_min_length 1k |
小于 1KB 的文件不压缩 |
gzip_comp_level 6 |
压缩级别 1-9,6 最合适 |
gzip_types |
压缩哪些类型的文件 |
gzip_vary on |
给响应头加 Vary: Accept-Encoding |
测试是否生效
方法一:浏览器 F12
打开浏览器开发者工具 → Network → 点一个 CSS/JS 文件 → 看 Response Headers 里有没有:
Content-Encoding: gzip
有就说明生效了。
方法二:curl 命令
curl -I -H "Accept-Encoding: gzip" https://www.example.com/style.css
看返回头里有没有 Content-Encoding: gzip。
常见坑
坑1:图片也压缩
配置里把图片类型也加上了。
问题: 图片(jpg/png)本身已经是压缩过的格式,再 gzip 没意义,还浪费 CPU。
解决: 只压缩文本文件,图片不用压。
坑2:压缩级别太高
设成了 9,以为压缩越狠越好。
问题: 级别太高会占用更多 CPU,压缩时间长,反而拖慢响应。
解决: 用 6 就够了,性价比最高。
坑3:PHP 页面没压缩
HTML 压缩了,但 PHP 输出的页面没压缩。
原因: PHP 页面已经被 PHP-FPM 压缩过了,Nginx 不会再压。
解决: 不用管,PHP 那边自己处理就行。
坑4:CDN 后面 gzip 不生效
用了 CDN,回源开了 gzip,但用户那边没压。
原因: CDN 回源拿的是压缩后的文件,CDN 缓存了。
解决: 刷新 CDN 缓存,或者 CDN 那边也开 gzip。
总结
开 gzip 就这几行配置:
gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript;
gzip_vary on;
记住: 文本文件压,图片别压;压缩级别用 6 就行。
遇到问题加QQ23979811 协助处理