Nginx可以通过gzip模块实现请求内容的压缩,从而减少传输数据量,提高网站性能。以下是详细的实现方法:
在nginx.conf或站点配置文件中添加以下配置:
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_vary on; # 根据客户端是否支持gzip返回不同内容
# 设置需要压缩的文件类型
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 禁用IE6的gzip压缩(IE6某些版本不支持)
gzip_disable "MSIE [1-6]\.";
# 设置压缩缓冲区大小和数量
gzip_buffers 16 8k;
# 设置代理请求的压缩行为
gzip_proxied any;
# 设置HTTP版本
gzip_http_version 1.1;
如果需要更好的压缩效果,可以启用Brotli压缩(需要安装ngx_brotli模块):
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
对于动态内容(PHP、Node.js等),需要在应用服务器端设置压缩头,或者在Nginx中配置:
location ~ \.php$ {
# ...其他配置...
gzip on;
gzip_proxied any;
}
配置完成后,可以通过以下方式验证:
使用curl命令检查响应头:
curl -I -H 'Accept-Encoding: gzip, deflate' http://yourdomain.com
应该能看到Content-Encoding: gzip
的响应头
使用开发者工具检查网络请求,查看响应是否被压缩
通过合理配置Nginx的压缩功能,可以显著减少传输数据量,提高网站加载速度。