Gzip压缩是提升网站性能的重要手段,可以有效减少传输数据量,加快页面加载速度。以下是Nginx中配置Gzip压缩的详细方法:
在Nginx配置文件中(通常位于/etc/nginx/nginx.conf
),找到http
部分添加以下配置:
http {
# 开启gzip压缩
gzip on;
# 设置压缩级别(1-9),6是一个较好的平衡点
gzip_comp_level 6;
# 最小压缩文件大小,小于此值不压缩
gzip_min_length 1024;
# 设置用于压缩的缓冲区数量和大小
gzip_buffers 16 8k;
# 设置需要压缩的MIME类型
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 针对代理请求的压缩配置
gzip_proxied any;
# 禁用对IE6的压缩(IE6某些版本不支持gzip)
gzip_disable "MSIE [1-6]\.";
# 添加Vary头,便于缓存处理
gzip_vary on;
}
对于不常变化的静态文件,可以预先压缩好(.gz文件),减少实时压缩的CPU开销:
gzip_static on;
使用此选项前,需要确保目录中存在对应的.gz文件(如style.css.gz)
# 对特定类型使用更高压缩级别
location ~* \.(js|css|html|json|xml)$ {
gzip_comp_level 9;
}
对于动态生成的内容(如PHP输出),确保后端不进行压缩,由Nginx统一处理:
location ~ \.php$ {
# 确保后端不压缩
proxy_set_header Accept-Encoding "";
# ...其他PHP配置
}
sudo nginx -t
sudo systemctl reload nginx
curl -I -H "Accept-Encoding: gzip" http://yourdomain.com | grep "Content-Encoding"
应该能看到Content-Encoding: gzip
的响应头
不要压缩已经压缩的内容:如图片、视频、PDF等二进制文件,它们已经经过压缩,再次压缩只会浪费CPU资源
CPU与带宽的平衡:更高的压缩级别(如9)会显著增加CPU负载,需根据服务器性能权衡
移动设备考虑:某些移动网络环境下,压缩/解压可能增加延迟,可适当调整压缩级别
缓存控制:确保压缩内容有适当的缓存头,避免重复压缩
通过合理配置Gzip压缩,通常可以减少60-70%的传输数据量,显著提升网站性能。