Nginx 支持两种类型的 Gzip 压缩:动态压缩和静态压缩。下面我将详细介绍这两种压缩方式的配置方法。
动态压缩是在请求时实时压缩内容,适用于动态生成的内容。
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;
# 对于代理请求,根据"Via"请求头决定是否压缩
gzip_proxied any;
# 在响应头中添加Vary: Accept-Encoding,避免代理服务器缓存问题
gzip_vary on;
# 禁用对IE6的gzip压缩(IE6某些版本不支持gzip)
gzip_disable "MSIE [1-6]\.";
}
静态压缩是预先压缩好静态文件,Nginx 直接发送已压缩的文件,减少 CPU 开销。
http {
# 开启gzip_static模块
gzip_static on;
# 如果客户端不支持gzip,则发送未压缩版本
gunzip on;
# 其他gzip配置(可选)
gzip_comp_level 6;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
预压缩文件: 在部署前,使用gzip预先压缩静态文件:
gzip -k -9 style.css # -k保留原文件,-9最高压缩级别
这会生成 style.css.gz
文件
文件结构: 确保原始文件和压缩文件在同一目录:
/var/www/html/
├── style.css
└── style.css.gz
特性 | 动态压缩 | 静态压缩 |
---|---|---|
CPU 使用 | 高 (每次请求时压缩) | 低 (只压缩一次) |
适用场景 | 动态内容 | 静态内容 |
响应时间 | 稍慢 (需要实时压缩) | 更快 (直接发送预压缩文件) |
存储空间 | 节省 (不存储压缩文件) | 需要额外空间存储压缩文件 |
希望这些配置信息对您有所帮助!如需进一步优化,可以根据实际访问模式和服务器资源进行调整。