mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3
359 字
1 分钟
CLI Proxy API 部署
2026-08-25
无标签

鉴于 CPA 的文档在 Docker 部署和反向代理的部分过于简陋,且配合 CPAMP 使用时部署存在一些问题,为避免额度盗刷,这里通过实测案例进行一些补充部署记录。

WARNING
  1. 本文档相关配置以最新版 CPACPAMP 为准。
  2. NGINX 默认部署在宿主机。

Docker 统一部署#

services:
cli-proxy-api:
image: eceasy/cli-proxy-api:latest
container_name: cli-proxy-api
ports:
- "127.0.0.1:8317:8317"
volumes:
# CPA 配置文件
- ./config.yaml:/CLIProxyAPI/config.yaml
# 凭证目录
- ./auth-dir:/root/.cli-proxy-api
# 插件
- ./plugins:/CLIProxyAPI/plugins
restart: unless-stopped
cpa-manager-plus:
image: seakee/cpa-manager-plus:latest
restart: unless-stopped
ports:
- '127.0.0.1:18317:18317'
volumes:
- ./cpa-manager-plus-data:/data
depends_on:
- cli-proxy-api

上述 docker compose 文件中,映射端口全部指定了 host 为 127.0.0.1,防止通过 公网IP:Port 访问到相关服务。

NGINX 反向代理#

NOTE

该部分参考反向代理 | CPA Manager Plus

首先,在 NGINX 的 http 块中加入如下配置,以支持正确处理 WebSocket 等需要 HTTP 协议升级(Upgrade)的反向代理请求:

# 其他配置
...
http {
# 其他配置
...
# 添加如下部分
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
}

然后,在 NGINX 配置文件目录 conf.d 下新增 cpa.conf

# 指定后端别名
upstream cpa_api {
server 127.0.0.1:8317;
}
upstream cpamp {
server 127.0.0.1:18317;
}
# http 默认跳转
server {
listen 80;
server_name your.cpa.domain;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name your.cpa.domain;
http2 on;
# SSL 证书配置
ssl_certificate xxx;
ssl_certificate_key xxx;
ssl_protocols TLSv1.2 TLSv1.3;
client_max_body_size 64m;
proxy_http_version 1.1;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_buffering off;
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 $connection_upgrade;
# 默认进入 CPAMP 面板
location = / {
return 302 /management.html;
}
# ===== CPA Manager Plus =====
location = /management.html { proxy_pass http://cpamp; }
location = /health { proxy_pass http://cpamp; }
location = /status { proxy_pass http://cpamp; }
location = /setup { proxy_pass http://cpamp; }
# CPAMP 兼容接口与运行时接口
location ^~ /usage-service/ { proxy_pass http://cpamp; }
# /v0/management/* 先进入 CPAMP:
# - 用量 / 模型价格 / API 密钥别名 / 仪表盘 / 请求监控 /
# Codex 账号巡检 / 导入导出 等由 CPAMP 自己处理
# - 其他 CPA 管理接口由 CPAMP 使用服务端保存的 CPA Management Key 继续代理到 CPA
#
# 注意:不要只配置 location = /v0/management
# 应使用带尾斜杠的前缀匹配 /v0/management/
location ^~ /v0/management/ { proxy_pass http://cpamp; }
# CPAMP 插件页面资源。缺少此规则时,插件页面可能打开空白或资源 404。
location ^~ /v0/resource/plugins/ { proxy_pass http://cpamp; }
# /models 由 CPAMP 提供兼容代理
# 如果 CPAMP 尚未完成 setup,访问此路径可能返回 412
location = /models { proxy_pass http://cpamp; }
# ===== CPA / CLI Proxy API =====
# OpenAI / Claude Code / Codex 等实际 API 请求应直接走 CPA
location ^~ /v1/ { proxy_pass http://cpa_api; }
location ^~ /v1beta/ { proxy_pass http://cpa_api; }
location ^~ /backend-api/codex/ { proxy_pass http://cpa_api; }
location ^~ /api/ { proxy_pass http://cpa_api; }
# CPA 特殊路由与 OAuth 回调
location = /v1internal:method { proxy_pass http://cpa_api; }
location = /healthz { proxy_pass http://cpa_api; }
location = /anthropic/callback { proxy_pass http://cpa_api; }
location = /codex/callback { proxy_pass http://cpa_api; }
location = /google/callback { proxy_pass http://cpa_api; }
location = /antigravity/callback { proxy_pass http://cpa_api; }
# 兜底给 CPA
# 用于 CPA 根路径、Amp 路由以及未来新增接口
location / {
proxy_pass http://cpa_api;
}
}

上述配置完成后,无需在防火墙开放 8317/18317 端口,保持关闭即可。

配置连接信息#

首次启动后,在 docker logs <container_id> 中可以看到 camp_xxx 字样的密钥,复制保存。该密钥为登录 CPAMP 面板的密钥。CPA 的密钥根据面板提示逐步设置。如果已经存在正在使用的 CPA,会自动接入对应信息。

需注意,CPA 地址在本文档的部署情况下,即 CPA 和 CPAMP 部署于同一 Docker 网络下,请填写 NGINX 中配置的后端名称:http://cli-proxy-api:8317

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

CLI Proxy API 部署
https://blog.085404.xyz/posts/cli-proxy-api-部署/
作者
sun2ot
发布于
2026-08-25
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录