本文完整记录了在阿里云 CentOS 8 服务器上,从配置科学上网到部署 Sub2API、再到用户通过 OpenClaw / Claude Code 使用的全流程,包括踩坑记录与解决方案。(服务器尽量用 Ubuntu 或者 Debian)。关于 mihomo 也可以用到 NAS 影视刮削,具体配置需要调整,⚠️别让 PT 把订阅额度消耗完,当然这个 Sub2API 也可以安装到 NAS 上。。。
前言
Claude Pro/Team 订阅价格不低,如果团队里多人都需要使用,每人一个订阅成本很高。Sub2API 可以将 Claude 订阅账号转化为兼容 Anthropic API 的服务,让多个用户通过 API Key 共享使用,大幅降低成本。(封号玄学问题此文不讨论)
整体架构如下:
1
2
3
4
5
|
用户(OpenClaw / Claude Code)
↓ API 请求
Sub2API(API 网关)
↓ 转发
Claude 上游账号(Pro 订阅)
|
本文将按以下顺序展开:
- 服务器科学上网 — Sub2API 需要访问 Claude,服务器必须能正确访问
- 部署 Sub2API — 搭建 API 网关服务
- 配置 Nginx 反向代理 — HTTPS 访问 + 修复常见 403 问题
- 用户使用指南 — Claude Code 和 OpenClaw 如何连接
服务器配置访问Claude
Sub2API 部署在国内服务器上,需要访问 Claude API,因此服务器本身必须能正常访问 Claude。这里使用 mihomo(原 Clash.Meta),它原生支持订阅链接,配置简单。
安装 mihomo
1
2
3
4
5
6
7
8
9
10
11
12
|
# 查看系统架构
uname -m
# 下载 mihomo(以 amd64 为例)
# 最新版本:https://github.com/MetaCubeXd/mihomo/releases
curl -Lo /tmp/mihomo.gz https://github.com/MetaCubeXd/mihomo/releases/download/v1.19.0/mihomo-linux-amd64-v1.19.0.gz
gunzip /tmp/mihomo.gz
mv /tmp/mihomo /usr/local/bin/mihomo
chmod +x /usr/local/bin/mihomo
# 创建配置目录
mkdir -p /etc/mihomo
|
为什么选 mihomo 而不是 sing-box? sing-box 官方安装脚本仅支持 Debian/Ubuntu,且原生不支持订阅链接,需要额外的转换工具。mihomo 通过proxy-providers直接填入订阅链接即可,更省事。
推荐个管理订阅的开源项目: https://github.com/7Sageer/sublink-worker
1.2 编写配置文件
创建/etc/mihomo/config.yaml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
mixed-port: 7890
allow-lan: true
mode: rule
log-level: info
geodata-mode: false
geo-auto-update: false
external-controller: 127.0.0.1:9090
proxy-providers:
airport:
type: http
url: "替换为你的订阅链接"
interval: 3600
path: ./proxies.yaml
filter: "(?i)新加坡|singapore|sg"
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
proxy-groups:
- name: "节点选择"
type: select
use:
- airport
rules:
- DOMAIN-SUFFIX,cn,DIRECT
- DOMAIN-KEYWORD,baidu,DIRECT
- DOMAIN-KEYWORD,alibaba,DIRECT
- DOMAIN-KEYWORD,tencent,DIRECT
- DOMAIN-SUFFIX,qq.com,DIRECT
- DOMAIN-SUFFIX,taobao.com,DIRECT
- DOMAIN-SUFFIX,jd.com,DIRECT
- DOMAIN-SUFFIX,163.com,DIRECT
- DOMAIN-SUFFIX,weixin.qq.com,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
- MATCH,节点选择
|
| 配置项 |
说明 |
mixed-port: 7890 |
同时提供 HTTP + SOCKS5 代理 |
allow-lan: true |
允许局域网设备连接(Docker 容器需要) |
external-controller |
启用 API,方便查看和切换节点 |
geodata-mode: false |
不使用 GeoIP 数据库,避免从 GitHub 下载失败 |
踩坑记录: 如果配置中使用了GEOIP规则,mihomo 会尝试从 GitHub 下载 GeoIP 数据库,但在国内服务器上经常因为connection reset by peer导致启动失败。解决办法是用域名规则替代 GeoIP 规则。
1.3 设置 systemd 服务
创建/etc/systemd/system/mihomo.service:
1
2
3
4
5
6
7
8
9
10
11
12
|
[Unit]
Description=mihomo Daemon
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
|
启动服务:
1
2
3
|
systemctl daemon-reload
systemctl enable --now mihomo
systemctl status mihomo
|
1.4 测试
测试是否可以通过 mihomo 访问 Google
1
|
export https_proxy=http://127.0.0.1:7890 && export http_proxy=http://127.0.0.1:7890 && curl -I https://www.google.com
|

1.5 配置 Docker 代理
Docker 守护进程不读取系统环境变量,需要单独配置。Sub2API 用 Docker 部署时,拉取镜像需要走代理:
1
2
3
4
5
6
7
8
9
10
11
|
mkdir -p /etc/systemd/system/docker.service.d
cat > /etc/systemd/system/docker.service.d/proxy.conf << 'EOF'
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7890"
Environment="HTTPS_PROXY=http://127.0.0.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,*.cn,*.aliyuncs.com"
EOF
systemctl daemon-reload
systemctl restart docker
|
确认代理已生效:
1
|
systemctl show --property=Environment docker
|

如果后续不想让 docker 走代理,删掉配置即可
1
2
3
|
rm /etc/systemd/system/docker.service.d/proxy.conf
systemctl daemon-reload
systemctl restart docker
|
1.6 节点管理
如果你在 1.4 步骤运行了测试,重新开一个新的 SSH 窗口,否则你下面的访问会走代理。
1
2
3
4
5
|
# 查看所有可用节点
curl -s http://127.0.0.1:9090/proxies/节点选择 | python3 -m json.tool
# 手动切换到指定节点(如新加坡节点)
curl -X PUT http://127.0.0.1:9090/proxies/节点选择 -d '{"name":"新加坡01"}'
|
加了个过滤走新加坡,防止走香港或者地址乱跳 ,在proxy-providers中添加filter。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
proxy-providers:
airport:
type: http
url: "你的订阅链接"
interval: 3600
path: ./proxies.yaml
filter: "(?i)新加坡|singapore|sg"
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
proxy-groups:
- name: "节点选择"
type: url-test
use:
- airport
interval: 300
tolerance: 50
|
1.7 查看日志
1
2
3
4
5
6
7
8
|
# 实时跟踪日志
journalctl -u mihomo -f
# 通过 API 查看实时连接
curl -s http://127.0.0.1:9090/connections | python3 -m json.tool
# 实时流量日志(持续输出)
curl -s http://127.0.0.1:9090/logs
|
如果想提高日志详细程度,修改配置文件里的log-level:改完重启 mihomosystemctl restart mihomo
1
2
3
4
|
log-level: debug # 最详细
# log-level: info # 一般信息
# log-level: warning # 仅警告
# log-level: error # 仅错误
|
二、部署 Sub2API
2.1 什么是 Sub2API
Sub2API是一个将 Claude 订阅账号转化为 Anthropic API 兼容接口的工具。它支持:
2.2 Docker Compose 部署
参考 Sub2API 官方仓库,使用 Docker Compose 部署:
1
2
3
4
5
|
# 拉取镜像(确保 Docker 已配置代理)
docker compose pull
# 启动服务
docker compose up -d
|
Sub2API 默认监听在127.0.0.1:8081(具体端口以你的配置为准)。
2.3 后台配置
部署完成后,进入 Sub2API 管理面板:
- 在 IP 管理添加代理,协议选 SOCKS5 即可,地址用阿里云内网 IP,防止 docker 内无法访问
127.0.0.1:7890端口
- 添加上游账号 — 添加你的 Claude Pro/Team 订阅账号的 OAuth Token
- 创建用户 — 为每个使用者创建账户
- 分发 API Key — 为用户生成
sk-xxx格式的 API Key
- 设置余额 — 给用户充值余额(默认余额为 0,不充值会报
INSUFFICIENT_BALANCE)
三、配置 Nginx 反向代理
Sub2API 需要通过 HTTPS 对外提供服务,使用 Nginx 做反向代理。
3.1 Nginx 配置
这是完整的、经过调优的配置:
首先,在/etc/nginx/nginx.conf的http块中添加:
1
2
3
4
|
http {
underscores_in_headers on; # 关键!允许下划线 Header
# ... 其他已有配置 ...
}
|
然后配置 server 块(如/etc/nginx/conf.d/subai.conf):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
server {
listen 443 ssl http2;
server_name subai.your-domain.com;
ssl_certificate /etc/nginx/cert/your-domain.pem;
ssl_certificate_key /etc/nginx/cert/your-domain.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/subai.access.log;
error_log /var/log/nginx/subai.error.log;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 流式响应必需
proxy_buffering off;
proxy_cache off;
# 防止长请求超时
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
|
3.2 关键配置说明
| 配置项 |
为什么需要 |
underscores_in_headers on |
Nginx 默认丢弃含下划线的 Header(如session_id),Sub2API 的多账号路由依赖此 Header, 不加这条是导致 403 最常见的原因 |
proxy_buffering off |
Claude 的流式响应需要关闭缓冲,否则用户体验会变成"等很久一次性输出" |
proxy_read_timeout 300s |
Claude 长对话的响应时间可能很长,默认 60s 容易超时 |
Upgrade+Connection |
支持 WebSocket/SSE 流式传输 |
TLSv1.2 TLSv1.3 |
TLSv1 和 TLSv1.1 已废弃,只保留安全版本 |
3.3 应用配置
1
2
3
4
5
|
# 测试配置语法
sudo nginx -t
# 重载配置
sudo nginx -s reload
|
3.4 验证部署
1
2
3
4
5
|
curl -X POST https://subai.your-domain.com/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: sk-你的key" \
-H "anthropic-version: 2023-06-01" \
-d '{"model":"claude-sonnet-4-20250514","max_tokens":100,"messages":[{"role":"user","content":"hi"}]}'
|
如果返回正常的 Claude 响应,说明部署成功。
四、常见错误排查
403 Forbidden
排查顺序:
- Nginx 丢失下划线 Header — 检查是否添加了
underscores_in_headers on
- API Key 错误 — 确认使用的是 Sub2API 生成的 Key,而非 Anthropic 官方 Key
- 上游账号问题 — OAuth Token 过期、订阅到期或被BAN
排查方法:
1
2
3
4
5
|
# 查看 Sub2API 日志
docker compose logs -f sub2api
# 查看 Nginx 日志
tail -f /var/log/nginx/subai.error.log
|
如果 curl 直接请求127.0.0.1:8081正常,但通过域名 403,说明是 Nginx 配置问题。
INSUFFICIENT_BALANCE
请求已到达 Sub2API,但用户余额不足。进入管理后台给对应用户充值即可。
——————–## 五、用户使用指南
以下是用户端的配置方法,用户只需要拿到两样东西:
5.1 Claude Code 使用
1
2
3
|
# 设置环境变量
export ANTHROPIC_BASE_URL="https://subai.your-domain.com"
export ANTHROPIC_API_KEY="sk-你的key"
|
写入 shell 配置文件使其持久化:
1
2
3
|
echo 'export ANTHROPIC_BASE_URL="https://subai.your-domain.com"' >> ~/.zshrc
echo 'export ANTHROPIC_API_KEY="sk-你的key"' >> ~/.zshrc
source ~/.zshrc
|
5.2 OpenClaw 使用
通过自定义Model provider 添加,API Base URL 写你 sub2api 域名

切换模型
在 OpenClaw 中切换到不同模型:
1
2
3
4
5
|
# 使用 Sonnet 模型
/model anthropic/claude-sonnet-4-6
# 使用 Opus 模型(注意 token 消耗约为 Sonnet 的 5-8 倍)
/model anthropic/claude-opus-4-6
|
如果使用配置文件方式,修改primary字段:
1
2
3
4
5
6
7
8
9
|
{
"agents": {
"defaults": {
"model": {
"primary": "sub2api/claude-opus-4-6-20250514"
}
}
}
}
|
验证连接
1
2
3
4
5
|
# 查看可用模型
openclaw models list
# 测试连接
openclaw models status --probe
|
5.3 其他应用使用
任何支持自定义 API 端点的应用,只需填入:
如果应用有代理配置界面,也可以直接填:
或:
——————–## 六、完整架构总结
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
┌──────────────────────────────────────────────────────┐
│ 用户端 │
│ Claude Code / OpenClaw / 其他兼容 Anthropic API 的工具 │
│ 配置: ANTHROPIC_BASE_URL + ANTHROPIC_API_KEY │
└──────────────────────┬───────────────────────────────┘
│ HTTPS
▼
┌──────────────────────────────────────────────────────┐
│ Nginx 反向代理 │
│ - SSL 终止 │
│ - underscores_in_headers on │
│ - proxy_buffering off(流式响应) │
└──────────────────────┬───────────────────────────────┘
│ HTTP
▼
┌──────────────────────────────────────────────────────┐
│ Sub2API │
│ - 用户管理 & API Key 分发 │
│ - 多上游账号负载均衡 │
│ - 余额 & 配额控制 │
└──────────────────────┬───────────────────────────────┘
│ 通过 mihomo 代理出海
▼
┌──────────────────────────────────────────────────────┐
│ mihomo 本地代理 (:7890) │
│ - ✈️订阅链接自动拉取节点 │
│ - 自动选择最低延迟节点 │
└──────────────────────┬───────────────────────────────┘
│
▼
Claude API (Anthropic)
|
——————–## 七、附录
mihomo 常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 启动/停止/重启
systemctl start mihomo
systemctl stop mihomo
systemctl restart mihomo
# 查看日志
journalctl -u mihomo -f
# 查看节点列表
curl -s http://127.0.0.1:9090/proxies/节点选择 | python3 -m json.tool
# 切换节点
curl -X PUT http://127.0.0.1:9090/proxies/节点选择 -d '{"name":"节点名称"}'
|
Sub2API 常用命令
1
2
3
4
5
6
7
8
|
# 查看日志
docker compose logs -f sub2api
# 重启服务
docker compose restart
# 更新版本
docker compose pull && docker compose up -d
|
卸载清理
1
2
3
4
5
6
7
8
9
10
11
12
|
# 卸载 mihomo
systemctl stop mihomo && systemctl disable mihomo
rm -f /etc/systemd/system/mihomo.service /usr/local/bin/mihomo
rm -rf /etc/mihomo
rm -f /etc/profile.d/proxy.sh
# 卸载 Sub2API
cd /path/to/sub2api && docker compose down
# 清理 Docker 代理
rm -f /etc/systemd/system/docker.service.d/proxy.conf
systemctl daemon-reload && systemctl restart docker
|
📎 参考文章