# ============================================================
# Nginx HTTP/3 (QUIC) 配置示例
# ============================================================
#
# 功能说明:
# - HTTP/3 基于 QUIC 协议
# - UDP 替代 TCP，减少握手延迟
# - 0-RTT 早期数据，更快连接
#
# Lolly 对应配置:
# server:
#   ssl:
#     cert: "/path/to/cert.pem"
#     key: "/path/to/key.pem"
# http3:
#   enabled: true
#   listen: ":443"
#   max_streams: 100
#   idle_timeout: 60s
#   enable_0rtt: false
# ============================================================

# nginx 需要 --with-http_v3_module 编译选项
# 或使用 nginx-quic 分支

server {
    # HTTP/3 监听 (UDP)
    listen 443 quic reuseport;

    # HTTP/2 和 HTTP/1.1 监听 (TCP)
    listen 443 ssl http2;

    server_name http3.example.com;

    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
    ssl_protocols TLSv1.3;  # HTTP/3 仅支持 TLS 1.3

    # HTTP/3 配置
    # Lolly 对应: http3 配置块

    # Alt-Svc 头: 通告 HTTP/3 支持
    add_header Alt-Svc 'h3=":443"; ma=86400';

    root /var/www/html;

    location / {
        try_files $uri $uri/ =404;
    }
}

# HTTP/3 说明:
#
# 1. QUIC 协议:
#    - 基于 UDP，避免 TCP 队头阻塞
#    - 内置 TLS 1.3，0-RTT 连接恢复
#    - 连接迁移：网络切换时保持连接
#
# 2. HTTP/3 vs HTTP/2:
#    - HTTP/2: TCP + TLS（需要两次握手）
#    - HTTP/3: QUIC（单次握手）
#    - HTTP/3 避免队头阻塞问题
#
# 3. 0-RTT 特性:
#    - 客户端缓存 Session Ticket
#    - 首次连接后，后续连接可立即发送数据
#    - 安全风险：可能被重放攻击
#    - Lolly 对应: http3.enable_0rtt: false（默认禁用）
#
# 4. Alt-Svc 通告:
#    - 服务端通过 Alt-Svc 头告知 HTTP/3 支持
#    - 格式: h3=":443"; ma=86400
#    - 客户端收到后尝试 HTTP/3 连接
#
# 5. Lolly HTTP/3 实现:
#    - 基于 quic-go 库
#    - 支持 0-RTT（可选启用）
#    - 与 HTTP/1.1/HTTP/2 共存
#    - UDP 和 TCP 同时监听
#
# 6. 网络要求:
#    - UDP 443 端口开放
#    - 部分网络可能限制 UDP
#    - 支持 fallback 到 HTTP/2