前言
由于网络原因,国内直接访问 OpenAI、Google Gemini、Claude 等 AI 服务的 API 往往不太稳定。本文介绍一种简单高效的解决方案——使用 Caddy 2 在美国服务器上搭建 API 中转服务。
相比 Nginx,Caddy 2 配置更简洁,且自动处理 HTTPS 证书,非常适合个人使用。
为什么要自己搭建?
市面上已有不少第三方中转服务,但自己搭建有以下优势:
- 隐私安全:API Key 不经过第三方
- 成本可控:没有额外的中转费用
- 稳定可靠:服务器在自己掌控中
- 学习价值:了解反向代理的工作原理
准备工作
- 一台美国 VPS(推荐 Ubuntu 22.04)
- 一个域名(任意域名均可)
- 域名解析到 VPS(添加 A 记录)
安装 Caddy 2
Caddy 2 是一个现代化的 Web 服务器,配置简单,功能强大。
# 添加 Caddy 官方源
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
# 安装 Caddy
sudo apt update && sudo apt install caddy
配置中转服务
创建 Caddyfile 配置文件:
sudo tee /etc/caddy/Caddyfile << 'EOF'
your-domain.com {
# 可选:启用访问日志
log {
output file /var/log/caddy/access.log {
roll_size 10MB
roll_keep 5
}
}
# OpenAI API
handle_path /openai/* {
reverse_proxy https://api.openai.com {
header_up -X-Forwarded-For
header_up -X-Forwarded-Proto
header_up -X-Forwarded-Host
header_up -X-Forwarded-Port
header_up -Accept-Language
header_up Host api.openai.com
}
}
# Google Gemini API
handle_path /gemini/* {
reverse_proxy https://generativelanguage.googleapis.com {
header_up -X-Forwarded-For
header_up -X-Forwarded-Proto
header_up -X-Forwarded-Host
header_up -X-Forwarded-Port
header_up -Accept-Language
header_up Host generativelanguage.googleapis.com
}
}
# Anthropic Claude API
handle_path /claude/* {
reverse_proxy https://api.anthropic.com {
header_up -X-Forwarded-For
header_up -X-Forwarded-Proto
header_up -X-Forwarded-Host
header_up -X-Forwarded-Port
header_up -Accept-Language
header_up Host api.anthropic.com
}
}
}
EOF
记得将 your-domain.com 替换为你的实际域名。
启动服务
# 创建日志目录
sudo mkdir -p /var/log/caddy
# 验证配置是否正确
sudo caddy validate --config /etc/caddy/Caddyfile
# 重载 Caddy 配置
sudo systemctl reload caddy
# 设置开机自启
sudo systemctl enable caddy
如果一切正常,Caddy 会自动申请 HTTPS 证书并启动服务。
配置解析
路径映射
/openai/*→ OpenAI 官方 API/gemini/*→ Google Gemini API/claude/*→ Anthropic Claude API
头部清理
配置中删除了以下头部,降低被风控的风险:
X-Forwarded-For:会暴露真实 IPX-Forwarded-*:暴露代理痕迹Accept-Language:可能暴露位置
User-Agent 默认透传,无需额外配置。
测试验证
测试 OpenAI
curl https://your-domain.com/openai/v1/chat/completions \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Hello"}]
}'
测试 Gemini
curl "https://your-domain.com/gemini/v1beta/models/gemini-1.5-flash:generateContent?key=YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"contents": [{"parts": [{"text": "Hello"}]}]}'
测试 Claude
curl https://your-domain.com/claude/v1/messages \
-H "x-api-key: your-key" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-opus-20240229",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'
客户端配置
在 ChatGPT 客户端、Claude 客户端或其他 AI 工具中,修改 API Base URL:
| 服务商 | 原地址 | 替换为 |
|---|---|---|
| OpenAI | https://api.openai.com | https://your-domain.com/openai |
| Gemini | https://generativelanguage.googleapis.com | https://your-domain.com/gemini |
| Claude | https://api.anthropic.com | https://your-domain.com/claude |
API Key 使用官方的 Key 即可。
查看日志
# 实时查看 Caddy 日志
sudo journalctl -u caddy -f
# 查看访问日志
sudo tail -f /var/log/caddy/access.log
按 Ctrl + C 退出日志查看。
常见问题
Q: 为什么访问返回 502?
检查服务器是否能正常访问官方 API:
curl https://api.openai.com/v1/models -H "Authorization: Bearer sk-your-key"
Q: 证书申请失败?
确保域名已正确解析到服务器 IP,且 80/443 端口开放。
Q: 是否需要清理 X-Real-IP?
Caddy 默认不会添加这个头部,无需处理。
Q: 流式输出支持吗?
完全支持,所有 API 功能与原官方一致。
安全建议
- 个人使用:当前配置已足够安全
- 对外分享:建议添加 Basic Auth 或限制访问 IP
- 定期检查:查看日志发现异常请求
结语
通过 Caddy 2 搭建 AI API 中转服务,配置简洁,维护成本低,非常适合个人用户。相比使用第三方中转,自己的服务器更加稳定可靠。
如果你有任何问题,欢迎在评论区留言交流。
延伸阅读:
标签:Caddy, OpenAI, Gemini, Claude, API代理, 反向代理, 教程
