随机
Enter 搜索 ↑↓ 切换 Esc 清空

nginx_gzip

命令

nginx gzip 压缩配置指令

nginx_gzip

nginx gzip 压缩配置指令

补充说明

gzip 指令用于启用 gzip 压缩,可以显著减少传输数据量,加快页面加载速度,同时节省带宽。压缩比建议设置在 4-6 之间,压缩级别越高 CPU 消耗越大。

语法

gzip on | off;
gzip_vary on | off;
gzip_proxied any;
gzip_comp_level level;     # 压缩级别 1-9,默认 1
gzip_buffers number size;  # 缓冲区设置
gzip_min_length length;    # 最小压缩长度
gzip_http_version version; # 最低 HTTP 版本
gzip_types mime-type ...;  # 要压缩的 MIME 类型
gzip_disable regex;        # 禁用特定 User-Agent

常用配置

http {
    # 启用 gzip
    gzip on;
    
    # 兼容旧代理
    gzip_vary on;
    
    # 代理请求也压缩
    gzip_proxied any;
    
    # 压缩级别(1-9,4-6 推荐)
    gzip_comp_level 6;
    
    # 缓冲区
    gzip_buffers 16 8k;
    
    # 最小压缩长度(字节)
    gzip_min_length 1024;
    
    # HTTP 版本
    gzip_http_version 1.1;
    
    # 压缩的 MIME 类型
    gzip_types 
        text/plain
        text/css
        text/xml
        text/javascript
        application/json
        application/javascript
        application/xml+rss
        application/x-javascript
        application/xml
        application/xhtml+xml
        application/atom+xml
        application/rss+xml
        application/ld+json
        application/manifest+json
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-web-app-manifest+json
        font/opentype
        font/ttf
        font/eot
        font/otf
        image/svg+xml
        image/x-icon;
    
    # 禁用 MSIE 6 的 gzip(兼容旧浏览器)
    gzip_disable "MSIE [1-6]\.";
}

server {
    location / {
        root /var/www/html;
        
        # 对特定文件启用 gzip
        gzip on;
        gzip_types text/css application/javascript;
    }
}

常用实例

# 静态资源压缩配置
server {
    listen 80;
    root /var/www/static;
    
    # 启用 gzip
    gzip on;
    gzip_min_length 1000;
    gzip_comp_level 5;
    gzip_vary on;
    gzip_proxied any;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
    
    # 预压缩文件(使用 nginx 的 gzip_static 模块)
    gzip_static on;
}

# 动态内容压缩
server {
    listen 80;
    
    location /api/ {
        proxy_pass http://backend;
        
        gzip on;
        gzip_min_length 100;
        gzip_comp_level 4;
        gzip_types application/json application/xml;
    }
}

压缩效果参考

文件类型 原始大小 gzip 后 压缩率
HTML 50KB 10KB 80%
CSS 30KB 6KB 80%
JS 100KB 35KB 65%
JSON 20KB 5KB 75%

相关模块

# gzip_static - 预压缩文件
# 需要编译时添加 --with-http_gzip_static_module
gzip_static on;

# gunzip - 解压 gzip 文件
# 适用于后端返回压缩内容但客户端不支持的情况
gunzip on;

测试压缩效果

# 使用 curl 测试
curl -I -H "Accept-Encoding: gzip" http://example.com/style.css

# 查看响应头
# Content-Encoding: gzip
# Content-Length: 1234