Files
AI-Proxy-Worker/docs/Configuration.md

316 lines
7.9 KiB
Markdown
Raw Normal View History

# 配置指南
<div align="center">
**🌍 Language / 语言**
[🇺🇸 English](./Configuration.en.md) | [🇨🇳 中文](./Configuration.md)
</div>
AI Proxy Worker 提供了多种配置选项,让你可以根据需求定制代理的行为。配置分为两类:环境变量配置和代码配置。
## 🔑 环境变量配置
这些配置通过 Cloudflare Workers 的 Secret 功能设置,在代码中无法看到具体值,确保安全性。
### 必需的环境变量
| 变量名 | 类型 | 说明 | 示例 |
|--------|------|------|------|
| `DEEPSEEK_API_KEY` | Secret | DeepSeek API 密钥 | `sk-...` |
**设置方法:**
```bash
wrangler secret put DEEPSEEK_API_KEY
# 输入你的 DeepSeek API 密钥
```
### 可选的环境变量
| 变量名 | 类型 | 说明 | 默认值 |
|--------|------|------|--------|
| `PROXY_KEY` | Secret | 代理访问密钥,用于保护你的代理 | 无(不启用认证) |
**设置方法:**
```bash
wrangler secret put PROXY_KEY
# 输入自定义的访问密钥my-secret-key-2025
```
**使用建议:**
- 生产环境强烈建议设置 `PROXY_KEY`
- 使用强密码生成器生成访问密钥
- 定期轮换密钥以提高安全性
## ⚙️ 代码配置
这些配置在 `worker.js` 文件的 `CONFIG` 对象中定义,可以根据需要修改。
### 核心配置项
#### DEEPSEEK_API_URL
- **类型**String
- **默认值**`'https://api.deepseek.com/chat/completions'`
- **说明**DeepSeek API 的端点地址
- **修改场景**:通常不需要修改,除非 DeepSeek 更改了 API 端点
```javascript
DEEPSEEK_API_URL: 'https://api.deepseek.com/chat/completions'
```
#### MAX_BODY_SIZE
- **类型**Number
- **默认值**`1024 * 1024` (1MB)
- **说明**:请求体的最大大小限制(字节)
- **修改场景**
- 增大:如果需要处理更长的对话历史
- 减小:如果想要更严格的限制以防止滥用
```javascript
MAX_BODY_SIZE: 1024 * 1024 // 1MB
MAX_BODY_SIZE: 2 * 1024 * 1024 // 2MB更宽松
MAX_BODY_SIZE: 512 * 1024 // 512KB更严格
```
#### REQUEST_TIMEOUT
- **类型**Number
- **默认值**`30000` (30秒)
- **说明**:向 DeepSeek API 请求的超时时间(毫秒)
- **修改场景**
- 增大:如果经常遇到超时错误
- 减小:如果想要更快的失败响应
```javascript
REQUEST_TIMEOUT: 30000 // 30秒默认
REQUEST_TIMEOUT: 60000 // 60秒更宽松
REQUEST_TIMEOUT: 15000 // 15秒更严格
```
#### VALIDATE_REQUEST_BODY
- **类型**Boolean
- **默认值**`false`
- **说明**:是否启用严格的请求体格式验证
- **修改场景**
- `true`:启用严格验证,会检查 messages 格式
- `false`:宽松模式,让 DeepSeek API 自己处理验证
```javascript
VALIDATE_REQUEST_BODY: false // 宽松模式(推荐)
VALIDATE_REQUEST_BODY: true // 严格模式
```
#### DEFAULT_MODEL
- **类型**String
- **默认值**`'deepseek-chat'`
- **说明**:当请求中没有指定模型时使用的默认模型
- **修改场景**:根据你的主要使用场景选择
```javascript
DEFAULT_MODEL: 'deepseek-chat' // 通用对话(默认)
DEFAULT_MODEL: 'deepseek-reasoner' // 推理任务为主
```
#### SUPPORTED_MODELS
- **类型**Array
- **默认值**`['deepseek-chat', 'deepseek-reasoner']`
- **说明**:支持的模型列表,用于验证和文档
- **修改场景**:当 DeepSeek 发布新模型时更新
```javascript
SUPPORTED_MODELS: [
'deepseek-chat', // 通用对话模型
'deepseek-reasoner' // 推理模型
]
```
### CORS 配置
#### CORS_HEADERS
- **说明**:跨域请求的响应头配置
- **默认配置**:允许所有域名访问
```javascript
const CORS_HEADERS = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
'Access-Control-Max-Age': '86400',
};
```
**生产环境建议:**
```javascript
// 限制特定域名
'Access-Control-Allow-Origin': 'https://yourdomain.com'
// 或者支持多个域名
'Access-Control-Allow-Origin': request.headers.get('origin') // 需要额外的验证逻辑
```
### 安全配置
#### SECURITY_HEADERS
- **说明**:安全相关的响应头
- **默认配置**:基础安全防护
```javascript
const SECURITY_HEADERS = {
'X-Content-Type-Options': 'nosniff',
'X-Frame-Options': 'DENY',
'X-XSS-Protection': '1; mode=block',
'Referrer-Policy': 'strict-origin-when-cross-origin',
};
```
## 🛠️ 高级配置
### 自定义配置示例
如果你需要更复杂的配置,可以这样修改:
```javascript
// 开发环境配置
const CONFIG = {
DEEPSEEK_API_URL: 'https://api.deepseek.com/chat/completions',
MAX_BODY_SIZE: 2 * 1024 * 1024, // 2MB更宽松
REQUEST_TIMEOUT: 60000, // 60秒更长的超时
VALIDATE_REQUEST_BODY: true, // 启用严格验证
DEFAULT_MODEL: 'deepseek-chat',
SUPPORTED_MODELS: [
'deepseek-chat',
'deepseek-reasoner'
]
};
// 生产环境配置
const CONFIG = {
DEEPSEEK_API_URL: 'https://api.deepseek.com/chat/completions',
MAX_BODY_SIZE: 512 * 1024, // 512KB更严格
REQUEST_TIMEOUT: 15000, // 15秒更快失败
VALIDATE_REQUEST_BODY: false, // 宽松验证,更好的兼容性
DEFAULT_MODEL: 'deepseek-chat',
SUPPORTED_MODELS: [
'deepseek-chat',
'deepseek-reasoner'
]
};
```
### 环境特定配置
你也可以在 `wrangler.toml` 中设置环境特定的配置:
```toml
name = "ai-proxy-worker"
main = "worker.js"
compatibility_date = "2025-08-17"
# 生产环境
[env.production]
name = "ai-proxy-worker-prod"
vars = { ENVIRONMENT = "production" }
# 开发环境
[env.development]
name = "ai-proxy-worker-dev"
vars = { ENVIRONMENT = "development" }
```
然后在代码中使用:
```javascript
// 根据环境调整配置
const isProduction = env.ENVIRONMENT === 'production';
const CONFIG = {
// ... 其他配置
MAX_BODY_SIZE: isProduction ? 512 * 1024 : 2 * 1024 * 1024,
REQUEST_TIMEOUT: isProduction ? 15000 : 60000,
VALIDATE_REQUEST_BODY: !isProduction, // 开发环境启用严格验证
};
```
## 📝 配置最佳实践
### 1. 安全配置
```javascript
// ✅ 推荐:生产环境限制 CORS
'Access-Control-Allow-Origin': 'https://yourdomain.com'
// ❌ 避免:生产环境使用通配符
'Access-Control-Allow-Origin': '*'
```
### 2. 性能配置
```javascript
// ✅ 推荐:合理的超时时间
REQUEST_TIMEOUT: 30000 // 30秒
// ❌ 避免:过长的超时时间
REQUEST_TIMEOUT: 300000 // 5分钟太长
```
### 3. 兼容性配置
```javascript
// ✅ 推荐:宽松的验证模式
VALIDATE_REQUEST_BODY: false
// ⚠️ 注意:严格模式可能导致某些客户端失败
VALIDATE_REQUEST_BODY: true
```
## 🔧 配置修改步骤
### 1. 修改代码配置
1. 编辑 `worker.js` 文件
2. 修改 `CONFIG` 对象中的相应值
3. 保存文件
### 2. 重新部署
```bash
wrangler publish
```
### 3. 验证配置
```bash
# 测试健康检查
curl https://your-worker.workers.dev/
# 测试 API 调用
curl -X POST https://your-worker.workers.dev/chat \
-H "Authorization: Bearer YOUR_PROXY_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-chat","messages":[{"role":"user","content":"test"}]}'
```
## ❓ 常见配置问题
### Q: 如何增加请求体大小限制?
A: 修改 `MAX_BODY_SIZE` 配置:
```javascript
MAX_BODY_SIZE: 2 * 1024 * 1024 // 增加到 2MB
```
### Q: 如何设置更严格的超时?
A: 修改 `REQUEST_TIMEOUT` 配置:
```javascript
REQUEST_TIMEOUT: 15000 // 减少到 15秒
```
### Q: 如何禁用请求验证?
A: 设置 `VALIDATE_REQUEST_BODY` 为 false
```javascript
VALIDATE_REQUEST_BODY: false
```
### Q: 如何限制 CORS 域名?
A: 修改 `CORS_HEADERS` 中的 `Access-Control-Allow-Origin`
```javascript
'Access-Control-Allow-Origin': 'https://yourdomain.com'
```
---
**需要帮助?** 👉 [故障排除指南](./Troubleshooting.md) | [📋 Issues](../../issues)