Files
ez-api/.env.example
zenfun f4d6f64068 docs(config): add trusted proxy and cdn details to .env.example
Update comments for EZ_BALANCER_TRUSTED_PROXIES to include:
- Header resolution priority (CF-Connecting-IP, Ali-CDN-Real-IP, etc.)
- Current Cloudflare IPv4/IPv6 CIDR lists for easier reference
- Specific notes on production configuration guidelines
2026-01-03 23:52:02 +08:00

202 lines
7.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ==============================================================================
# EZ-API 配置文件示例
# 默认值已针对生产环境优化,开发环境可按需调整
# ==============================================================================
# ==============================================================================
# Control Plane (ez-api) 配置
# ==============================================================================
# 服务监听端口
EZ_API_PORT=8080
# PostgreSQL 主库连接字符串
# 生产环境:使用强密码和 SSL 连接
# 开发环境:可使用本地默认配置
EZ_PG_DSN=host=postgres user=postgres password=postgres dbname=ezapi port=5432 sslmode=disable
# 日志库 DSN可选留空将使用主库写日志
# 生产环境:建议配置独立日志库,避免日志 I/O 影响主库性能
# 开发环境:留空即可
EZ_LOG_PG_DSN=
# Redis 连接配置用于配置快照、实时计数、Feature Flags
EZ_REDIS_ADDR=redis:6379
# 生产环境:必须设置强密码
# 开发环境:可留空
EZ_REDIS_PASSWORD=
EZ_REDIS_DB=0
# ------------------------------------------------------------------------------
# 鉴权配置
# ------------------------------------------------------------------------------
# 管理员 Token用于访问 /admin/* 端点
# 生产环境:必须设置强随机 Token建议 32+ 字符)
# 开发环境:可使用简单值
EZ_ADMIN_TOKEN=admin123
# 内部统计回写鉴权 Token用于 Balancer 调用 /internal/stats/flush
# 生产环境:必须设置强随机 Token与 EZ_BALANCER_STATS_FLUSH_TOKEN 保持一致
# 开发环境:可使用简单值
EZ_INTERNAL_STATS_TOKEN=internal123
# 是否允许匿名访问 /internal/* 端点
# 生产环境:必须为 false默认空 token 时返回 401
# 开发环境:可设为 true 方便调试
EZ_INTERNAL_ALLOW_ANON=false
# 允许的 CORS Origin 列表(逗号分隔)
# 生产环境:应指定具体域名,如 https://dashboard.example.com
# 开发环境:可使用 * 允许所有
EZ_CORS_ALLOW_ORIGINS=*
# ------------------------------------------------------------------------------
# 日志配置
# ------------------------------------------------------------------------------
# 日志保留天数(超过此天数的日志会被清理)
# 生产环境:根据合规要求设置,建议 30-90 天
# 开发环境:可设置较短周期
EZ_LOG_RETENTION_DAYS=30
# 日志最大记录数(超过此数量的旧日志会被清理)
# 生产环境:根据存储容量设置
# 开发环境:可设置较小值
EZ_LOG_MAX_RECORDS=1000000
# 日志分区策略off不分区、month按月、day按天
# 生产环境:建议 month 或 day便于归档和清理
# 开发环境off 即可
EZ_LOG_PARTITIONING=off
# 日志缓冲队列容量
EZ_LOG_QUEUE=10000
# 单次 DB 写入日志数
EZ_LOG_BATCH_SIZE=10
# 日志批量刷新间隔(毫秒)
EZ_LOG_FLUSH_MS=1000
# ------------------------------------------------------------------------------
# 同步可靠性配置Control Plane -> Redis outbox
# ------------------------------------------------------------------------------
# 是否启用 outbox 重试机制Redis 同步失败时自动重试)
# 生产环境:建议启用(默认),确保配置同步可靠性
# 开发环境:可关闭简化调试
EZ_SYNC_OUTBOX_ENABLED=true
# outbox 重试间隔(秒)
EZ_SYNC_OUTBOX_INTERVAL_SECONDS=5
# outbox 单次处理数量
EZ_SYNC_OUTBOX_BATCH_SIZE=200
# outbox 最大重试次数
EZ_SYNC_OUTBOX_MAX_RETRIES=10
# ------------------------------------------------------------------------------
# Swagger UI 配置
# ------------------------------------------------------------------------------
# Swagger UI Host留空则使用相对路径适合反向代理部署
# 生产环境:建议配置实际域名,如 api.example.com
# 开发环境:留空或设为 localhost:8080
EZ_SWAGGER_HOST=
# ------------------------------------------------------------------------------
# 独立日志库配置docker-compose log-postgres可选
# ------------------------------------------------------------------------------
LOG_POSTGRES_USER=postgres
LOG_POSTGRES_PASSWORD=postgres
LOG_POSTGRES_DB=ezapi_logs
# ==============================================================================
# Data Plane (balancer) 配置
# ==============================================================================
# 服务监听端口
EZ_BALANCER_PORT=8081
# ------------------------------------------------------------------------------
# 鉴权与安全配置
# ------------------------------------------------------------------------------
# 是否允许 sk-test* 前缀的测试 Token 绕过鉴权
# 生产环境:必须为 false默认禁止测试 Token
# 开发环境:可设为 true 方便调试
EZ_BALANCER_ENABLE_TEST_KEYS=false
# 可信反向代理 IP/CIDR 列表(逗号分隔)
# 用于在反向代理后正确解析客户端真实 IP支持 IP 白名单/黑名单功能
# 仅当 RemoteAddr 命中可信代理时才信任代理头CF-Connecting-IP, Ali-CDN-Real-IP, X-Real-IP, X-Forwarded-For
#
# 支持的 CDN 头(按优先级):
# 1. CF-Connecting-IP (Cloudflare)
# 2. Ali-CDN-Real-IP (阿里云 CDN)
# 3. X-Real-IP
# 4. X-Forwarded-For
#
# 生产环境:必须配置为实际代理 IP
# 开发环境:可留空(直连场景)
#
# Cloudflare IP 段(截至 2025-01请定期检查 https://www.cloudflare.com/ips/
# IPv4: 173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22
# IPv6: 2400:cb00::/32,2606:4700::/32,2803:f800::/32,2405:b500::/32,2405:8100::/32,2a06:98c0::/29,2c0f:f248::/32
#
# 阿里云 CDN节点 IP 动态变化,建议通过阿里云控制台获取或使用 Ali-CDN-Real-IP 头)
#
EZ_BALANCER_TRUSTED_PROXIES=
# ------------------------------------------------------------------------------
# 日志上报配置Balancer -> Control Plane
# ------------------------------------------------------------------------------
# 是否启用日志上报
# 生产环境:建议启用,以便在 Control Plane 统一查看请求日志
# 开发环境可关闭Balancer 可独立运行)
EZ_BALANCER_LOG_SINK_ENABLED=true
# 日志上报目标地址ez-api
EZ_BALANCER_LOG_SINK_BASE_URL=http://ez-api:8080
# 日志上报超时(秒)
EZ_BALANCER_LOG_SINK_TIMEOUT_SECONDS=3
# ------------------------------------------------------------------------------
# 实时计数回写配置Balancer -> Control Plane
# ------------------------------------------------------------------------------
# 是否启用实时计数回写
# 生产环境:建议启用,以支持配额管理和用量报表
# 开发环境可关闭Balancer 可独立运行)
EZ_BALANCER_STATS_FLUSH_ENABLED=true
# 计数回写目标地址ez-api
EZ_BALANCER_STATS_FLUSH_BASE_URL=http://ez-api:8080
# 计数回写鉴权 Token需与 EZ_INTERNAL_STATS_TOKEN 一致)
# 生产环境:必须设置强随机 Token
# 开发环境:可使用简单值
EZ_BALANCER_STATS_FLUSH_TOKEN=internal123
# 计数回写间隔(秒)
EZ_BALANCER_STATS_FLUSH_INTERVAL_SECONDS=300
# 计数回写批次大小
EZ_BALANCER_STATS_FLUSH_BATCH_SIZE=200
# 计数回写超时(秒)
EZ_BALANCER_STATS_FLUSH_TIMEOUT_SECONDS=5
# ------------------------------------------------------------------------------
# 上游请求配置
# ------------------------------------------------------------------------------
# 按 provider type 配置非流式请求超时JSON 格式)
# 支持的 provider type: default, openai, compatible, anthropic, claude, google
EZ_BALANCER_TIMEOUT_BY_PROVIDER={"default":30,"openai":40,"compatible":40,"anthropic":50,"claude":50,"google":60}