feat(Sora): 完成Sora网关接入与媒体能力
新增 Sora 网关路由、账号调度与同步服务\n补充媒体代理与签名 URL、模型列表动态拉取\n完善计费配置、前端支持与相关测试
This commit is contained in:
@@ -1,39 +1,6 @@
|
||||
# =============================================================================
|
||||
# Sub2API Caddy Reverse Proxy Configuration (宿主机部署)
|
||||
# =============================================================================
|
||||
# 使用方法:
|
||||
# 1. 安装 Caddy: https://caddyserver.com/docs/install
|
||||
# 2. 修改下方 example.com 为你的域名
|
||||
# 3. 确保域名 DNS 已指向服务器
|
||||
# 4. 复制配置: sudo cp Caddyfile /etc/caddy/Caddyfile
|
||||
# 5. 重载配置: sudo systemctl reload caddy
|
||||
#
|
||||
# Caddy 会自动申请和续期 Let's Encrypt SSL 证书
|
||||
# =============================================================================
|
||||
|
||||
# 全局配置
|
||||
{
|
||||
# Let's Encrypt 邮箱通知
|
||||
email admin@example.com
|
||||
|
||||
# 服务器配置
|
||||
servers {
|
||||
# 启用 HTTP/2 和 HTTP/3
|
||||
protocols h1 h2 h3
|
||||
|
||||
# 超时配置
|
||||
timeouts {
|
||||
read_body 30s
|
||||
read_header 10s
|
||||
write 300s
|
||||
idle 300s
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# 修改为你的域名
|
||||
example.com {
|
||||
# =========================================================================
|
||||
api.sub2api.com {
|
||||
# =========================================================================
|
||||
# 静态资源长期缓存(高优先级,放在最前面)
|
||||
# 带 hash 的文件可以永久缓存,浏览器和 CDN 都会缓存
|
||||
# =========================================================================
|
||||
@@ -87,17 +54,13 @@ example.com {
|
||||
|
||||
# 连接池优化
|
||||
transport http {
|
||||
versions h2c h1
|
||||
keepalive 120s
|
||||
keepalive_idle_conns 256
|
||||
read_buffer 16KB
|
||||
write_buffer 16KB
|
||||
compression off
|
||||
}
|
||||
|
||||
# SSE/流式传输优化:禁用响应缓冲,立即刷新数据给客户端
|
||||
flush_interval -1
|
||||
|
||||
|
||||
# 故障转移
|
||||
fail_duration 30s
|
||||
max_fails 3
|
||||
@@ -112,10 +75,6 @@ example.com {
|
||||
gzip 6
|
||||
minimum_length 256
|
||||
match {
|
||||
# SSE 请求通常会带 Accept: text/event-stream,需排除压缩
|
||||
not header Accept text/event-stream*
|
||||
# 排除已知 SSE 路径(即便 Accept 缺失)
|
||||
not path /v1/messages /v1/responses /responses /antigravity/v1/messages /v1beta/models/* /antigravity/v1beta/models/*
|
||||
header Content-Type text/*
|
||||
header Content-Type application/json*
|
||||
header Content-Type application/javascript*
|
||||
@@ -199,7 +158,3 @@ example.com {
|
||||
respond "{err.status_code} {err.status_text}"
|
||||
}
|
||||
}
|
||||
|
||||
# =============================================================================
|
||||
# HTTP 重定向到 HTTPS (Caddy 默认自动处理,此处显式声明)
|
||||
# =============================================================================
|
||||
|
||||
@@ -116,6 +116,33 @@ gateway:
|
||||
# Max request body size in bytes (default: 100MB)
|
||||
# 请求体最大字节数(默认 100MB)
|
||||
max_body_size: 104857600
|
||||
# Sora max request body size in bytes (0=use max_body_size)
|
||||
# Sora 请求体最大字节数(0=使用 max_body_size)
|
||||
sora_max_body_size: 268435456
|
||||
# Sora stream timeout (seconds, 0=disable)
|
||||
# Sora 流式请求总超时(秒,0=禁用)
|
||||
sora_stream_timeout_seconds: 900
|
||||
# Sora non-stream timeout (seconds, 0=disable)
|
||||
# Sora 非流式请求超时(秒,0=禁用)
|
||||
sora_request_timeout_seconds: 180
|
||||
# Sora stream enforcement mode: force/error
|
||||
# Sora stream 强制策略:force/error
|
||||
sora_stream_mode: "force"
|
||||
# Sora model filters
|
||||
# Sora 模型过滤配置
|
||||
sora_model_filters:
|
||||
# Hide prompt-enhance models by default
|
||||
# 默认隐藏 prompt-enhance 模型
|
||||
hide_prompt_enhance: true
|
||||
# Require API key for /sora/media proxy (default: false)
|
||||
# /sora/media 是否强制要求 API Key(默认 true)
|
||||
sora_media_require_api_key: true
|
||||
# Sora media temporary signing key (empty disables signed URL)
|
||||
# Sora 媒体临时签名密钥(为空则禁用签名)
|
||||
sora_media_signing_key: ""
|
||||
# Signed URL TTL seconds (<=0 disables)
|
||||
# 临时签名 URL 有效期(秒,<=0 表示禁用)
|
||||
sora_media_signed_url_ttl_seconds: 900
|
||||
# Connection pool isolation strategy:
|
||||
# 连接池隔离策略:
|
||||
# - proxy: Isolate by proxy, same proxy shares connection pool (suitable for few proxies, many accounts)
|
||||
@@ -220,6 +247,31 @@ gateway:
|
||||
# name: "Custom Profile 1"
|
||||
# profile_2:
|
||||
# name: "Custom Profile 2"
|
||||
|
||||
# =============================================================================
|
||||
# Sora2API Configuration
|
||||
# Sora2API 配置
|
||||
# =============================================================================
|
||||
sora2api:
|
||||
# Sora2API base URL
|
||||
# Sora2API 服务地址
|
||||
base_url: "http://127.0.0.1:8000"
|
||||
# Sora2API API Key (for /v1/chat/completions and /v1/models)
|
||||
# Sora2API API Key(用于生成/模型列表)
|
||||
api_key: ""
|
||||
# Admin username/password (for token sync)
|
||||
# 管理口用户名/密码(用于 token 同步)
|
||||
admin_username: "admin"
|
||||
admin_password: "admin"
|
||||
# Admin token cache ttl (seconds)
|
||||
# 管理口 token 缓存时长(秒)
|
||||
admin_token_ttl_seconds: 900
|
||||
# Admin request timeout (seconds)
|
||||
# 管理口请求超时(秒)
|
||||
admin_timeout_seconds: 10
|
||||
# Token import mode: at/offline
|
||||
# Token 导入模式:at/offline
|
||||
token_import_mode: "at"
|
||||
# cipher_suites: [4866, 4867, 4865, 49199, 49195, 49200, 49196]
|
||||
# curves: [29, 23, 24]
|
||||
# point_formats: [0]
|
||||
|
||||
Reference in New Issue
Block a user