
在 Nginx 中启用 gzip
压缩可以显著减少传输数据量,提升网页加载速度,尤其对文本类内容(如 HTML、CSS、JS)效果明显。以下是详细的配置方法和优化建议:
1. 基础配置
在 http
、server
或 location
块中添加以下指令:
http {
# 启用 gzip 压缩
gzip on;
# 最小压缩文件大小(小于1K不压缩)
gzip_min_length 1k;
# 压缩级别(1-9,越高压缩率越大但CPU消耗越多,建议折中选6)
gzip_comp_level 6;
# 支持的MIME类型(需根据实际需求调整)
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 是否对代理请求生效(如后端服务已压缩可关闭)
gzip_proxied any;
# 添加Vary头,兼容代理缓存
gzip_vary on;
# 禁用对IE6的压缩(IE6兼容性差)
gzip_disable "MSIE [1-6].";
}
2. 关键指令解析
指令 | 作用 |
---|---|
gzip on |
开启 gzip 压缩功能。 |
gzip_min_length |
仅压缩大于指定大小的文件(避免小文件压缩后反而变大)。 |
gzip_comp_level |
压缩级别(1-9),建议设为 6 (平衡压缩率和CPU消耗)。 |
gzip_types |
指定需要压缩的文件类型,常用文本类型已列出,可根据需求增减。 |
gzip_proxied |
控制是否压缩代理请求(如 any 表示所有代理请求都压缩)。 |
gzip_vary |
添加 Vary: Accept-Encoding 响应头,帮助缓存服务器正确处理压缩内容。 |
gzip_disable |
对特定User-Agent(如IE6)禁用压缩。 |
3. 高级优化技巧
(1)预生成压缩文件
避免动态压缩的CPU开销,提前生成 .gz
文件:
location / {
# 优先返回预压缩文件(如style.css.gz)
gzip_static on;
try_files $uri $uri/ =404;
}
- 操作步骤:
gzip -k9 style.css # 生成 style.css.gz(保留原文件)
(2)Brotli 压缩(更高压缩率)
若安装 ngx_brotli
模块,可替代或补充 gzip:
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml;
(3)动态压缩缓存
减少重复压缩消耗:
gzip_buffers 16 8k; # 压缩缓冲区(数量+大小)
gzip_http_version 1.1; # 仅对HTTP/1.1及以上协议压缩
4. 完整配置示例
http {
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_proxied any;
gzip_vary on;
gzip_disable "MSIE [1-6].";
# 预压缩文件支持
gzip_static on;
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
try_files $uri $uri/ /index.html;
}
# 单独为API关闭压缩(若API返回已压缩数据)
location /api/ {
gzip off;
proxy_pass http://backend;
}
}
}
5. 验证压缩是否生效
方法1:检查响应头
curl -I -H "Accept-Encoding: gzip" http://example.com/style.css
- 生效标志:
Content-Encoding: gzip Vary: Accept-Encoding
方法2:查看文件大小对比
curl -sH "Accept-Encoding: gzip" http://example.com/style.css | wc -c
curl -s http://example.com/style.css | wc -c
6. 注意事项
CPU 与 压缩率的权衡
- 压缩级别(
gzip_comp_level
)越高,CPU 消耗越大,建议生产环境设为5-6
。
- 压缩级别(
避免重复压缩
- 若后端服务(如Node.js)已压缩响应,需在Nginx中关闭对应路由的
gzip
。
- 若后端服务(如Node.js)已压缩响应,需在Nginx中关闭对应路由的
大文件压缩
- 大文件(如视频)不建议压缩(消耗CPU且效果有限),可通过
gzip_min_length
排除。
- 大文件(如视频)不建议压缩(消耗CPU且效果有限),可通过
缓存兼容性
- 确保
gzip_vary on
,否则可能导致代理服务器缓存错误版本。
- 确保
性能对比(示例)
文件类型 | 原始大小 | 压缩后大小 | 压缩率 |
---|---|---|---|
HTML | 50KB | 10KB | 80% |
CSS | 100KB | 20KB | 80% |
JavaScript | 200KB | 50KB | 75% |
通过合理配置 gzip,通常可减少 60%-80% 的文本类数据传输量,显著提升页面加载速度。
学在每日,进无止境!更多精彩内容请关注微信公众号。

原文出处:
内容由AI生成仅供参考,请勿使用于商业用途。如若转载请注明原文及出处。
出处地址:http://www.07sucai.com/tech/964.html
版权声明:本文来源地址若非本站均为转载,若侵害到您的权利,请及时联系我们,我们会在第一时间进行处理。