# ============================================================ # Nginx Gzip 压缩配置示例 # ============================================================ # # 功能说明: # - 响应内容压缩 # - 减少传输带宽 # - 可配置压缩级别和类型 # # Lolly 对应配置: # server: # compression: # type: "gzip" # level: 6 # min_size: 1024 # gzip_static: false # gzip_static_extensions: [".gz", ".br"] # types: # - "text/html" # - "text/css" # - "text/javascript" # - "application/json" # - "application/javascript" # ============================================================ http { server { listen 80; server_name gzip.example.com; # Gzip 基础配置 # Lolly 对应: compression 配置块 # 启用 Gzip gzip on; # 压缩级别(1-9) # 1: 最快,压缩率最低 # 9: 最慢,压缩率最高 # 推荐: 4-6(平衡性能和压缩率) # Lolly 对应: compression.level: 6 gzip_comp_level 6; # 最小压缩大小 # 小于此值不压缩(压缩反而增加大小) # Lolly 对应: compression.min_size: 1024 gzip_min_length 1024; # 压缩类型 # 指定需要压缩的 MIME 类型 # Lolly 对应: compression.types gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml application/xml+rss application/x-javascript image/svg+xml; # 压缩变体 gzip_vary on; # 添加 Vary: Accept-Encoding 头 # 压缩缓冲 gzip_buffers 16 8k; # 16 个 8KB 缓冲区 # HTTP 版本 gzip_http_version 1.1; # 仅 HTTP/1.1 以上启用 # 禁用 IE6 压缩(IE6 有 bug) gzip_disable "msie6"; # 预压缩文件支持 # 自动查找 .gz 文件 # Lolly 对应: compression.gzip_static: true gzip_static on; location / { root /var/www/html; } # 静态资源(预压缩优化) location /assets { # 预压缩文件优先 gzip_static on; root /var/www/assets; } # API 响应压缩 location /api { gzip_types application/json; gzip_min_length 256; # API 响应较小,降低阈值 proxy_pass http://backend:8080; } } } # Gzip 说明: # # 1. 压缩级别选择: # - 静态内容(CSS/JS): 建议预压缩,级别 9 # - 动态内容: 建议 4-6,平衡性能 # - 实时响应: 建议 1-3,降低延迟 # # 2. 预压缩文件: # - 预先使用 gzip -9 压缩 # - 文件名: file.js.gz # - nginx 直接返回预压缩文件 # - 避免实时压缩开销 # # 3. MIME 类型: # - 图片/视频通常已压缩,不需要再压缩 # - 文本类型收益最大 # - 注意压缩 JSON API 响应 # # 4. Vary 头: # - Vary: Accept-Encoding # - 告知缓存服务器根据 Accept-Encoding 缓存不同版本 # - 防止给不支持 gzip 的客户端返回压缩内容 # # 5. 生成预压缩文件: # gzip -9 -k file.js # 保留原文件,生成 file.js.gz # brotli --best file.js # 生成 file.js.br