# ============================================================
# Nginx Brotli 压缩配置示例
# ============================================================
#
# 功能说明:
# - Brotli 压缩算法（比 Gzip 更高效）
# - 更高压缩率，更快解压
# - 需要安装 ngx_brotli 模块
#
# Lolly 对应配置:
# server:
#   compression:
#     type: "brotli"  # 或 "both" 同时启用 gzip 和 brotli
#     level: 6
#     min_size: 1024
#     gzip_static: true
#     gzip_static_extensions: [".br", ".gz"]
# ============================================================

# 需要安装 ngx_brotli 模块
# https://github.com/google/ngx_brotli

http {
    # Brotli 基础配置
    brotli on;
    brotli_comp_level 6;  # 压缩级别（0-11）
    brotli_min_length 256;  # 最小压缩大小
    brotli_buffers 16 8k;  # 缓冲区
    brotli_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml application/xml+rss image/svg+xml;

    # 预压缩文件支持
    # 自动查找 .br 文件
    brotli_static on;

    server {
        listen 443 ssl http2;
        server_name brotli.example.com;

        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key;

        # Brotli 压缩配置
        # Lolly 对应: compression.type: "brotli"

        location / {
            brotli on;
            brotli_comp_level 6;
            root /var/www/html;
        }

        # 静态资源（预压缩优先）
        location /assets {
            brotli_static on;
            gzip_static on;  # 同时支持 gzip 预压缩

            root /var/www/assets;
        }
    }
}

# Brotli vs Gzip:
#
# 1. 压缩效率:
#    - Brotli: 通常比 Gzip 高 20-30% 压缩率
#    - 相同质量下体积更小
#    - 更适合静态资源
#
# 2. 性能:
#    - 压缩速度: Gzip 更快（低级别）
#    - 解压速度: Brotli 更快
#    - 推荐: 预压缩文件使用 Brotli
#
# 3. 浏览器支持:
#    - Brotli: 所有现代浏览器支持（2016+）
#    - 通过 Accept-Encoding: br 协商
#    - IE11 不支持 Brotli
#
# 4. 同时启用 gzip 和 brotli:
#    nginx 根据客户端支持自动选择
#    Lolly 对应: compression.type: "both"
#
# 5. 预压缩生成:
#    brotli --best file.js  # 最高压缩率
#    brotli -q 6 file.js    # 平衡压缩率
#    gzip -9 -k file.js     # gzip 预压缩