Gzip 是一种常用的数据压缩方式,可以显著减少传输内容的大小,提高网站加载速度。以下是 Nginx 中配置 Gzip 压缩的详细方法。
在 Nginx 配置文件中(通常在 nginx.conf
或 sites-available/your-site
中),添加以下配置:
gzip on; # 启用 gzip 压缩
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1024; # 最小压缩文件大小
gzip_comp_level 6; # 压缩级别(1-9)
# 开启gzip
gzip on;
# 启用gzip压缩的最小文件,小于该值的文件将不会压缩
gzip_min_length 1k;
# gzip 压缩级别,1-9,数字越大压缩率越高,但消耗CPU资源也越多
gzip_comp_level 6;
# 进行压缩的文件类型
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
# 禁用IE 6 gzip
gzip_disable "MSIE [1-6]\.";
# 设置用于处理请求压缩的缓冲区数量和大小
gzip_buffers 16 8k;
# 设置gzip压缩针对的HTTP协议版本
gzip_http_version 1.1;
压缩级别选择:通常 gzip_comp_level 6
提供了良好的压缩比和性能平衡。
文件类型:确保压缩文本类型文件(HTML、CSS、JS、JSON、XML等),但不要压缩已经压缩过的文件(如图片、PDF等)。
最小长度:设置合理的 gzip_min_length
避免压缩非常小的文件,因为压缩小文件可能得不偿失。
预压缩静态文件:对于不常变化的静态文件,可以预压缩并保存为 .gz
文件,然后配置 Nginx 直接提供预压缩版本:
gzip_static on;
sudo nginx -t
sudo systemctl reload nginx
curl -H "Accept-Encoding: gzip" -I http://yourdomain.com | grep -i "content-encoding"
应该能看到 Content-Encoding: gzip
的响应头。
Gzip 压缩会消耗一定的 CPU 资源,在高流量网站上需要权衡压缩级别。
现代浏览器都支持 gzip 解压,无需担心兼容性问题。
如果使用 HTTPS,确保没有中间代理服务器重复压缩内容。
通过合理配置 Gzip 压缩,可以显著减少传输数据量,提高网站性能,特别是在移动网络环境下效果更为明显。