New API:Docker 与 Nginx 部署
New API 的容器化部署、Nginx HTTPS 反向代理、OAuth 接入与常见 Nginx 问题处理。
须知
部署
1.rn美国 vps 部署 使用 sql lite 方式部署
docker run --name new-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/new-api:/data calciumion/new-api:latest
2.已经可以访问了 使用 ip:3000 现在cf 添加二级域名
ps:开启小黄云 需要优选 ip 或域名, 否则属于负优化
3.安装 Nginx 和 Certbot
apt update
apt install nginx certbot python3-certbot-nginx -y
# debian 和 ubuntu 默认配置文件为 /etc/nginx/sites-available/
# centos 和 rhel 默认配置文件夹为 /etc/nginx/conf.d/
编辑配置文件nano /etc/nginx/sites-available/new-api
server {
listen 80;
server_name api.example.com; # 你的二级域名
location / {
proxy_pass http://127.0.0.1:3000; # 转发到 New API 端口
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;
}
}
使用 certbot 申请证书
certbot --nginx -d api.example.com
# 1邮箱 you@example.com
# 2同意条款Y
# 3分享邮箱N
4.访问 api.example.com 登录

配置渠道
Codex OAuth
1 通过注册机获取几个账号
2 new api 中渠道管理添加渠道
3 选择 Codex (OpenAI OAuth), 密钥中填写注册机获取到的授权文件中的 json
4 选择模型 这里选择 gpt-5.2,gpt-5.2-codex,gpt-5.3-codex ,一些较新模型如果cpa中存在 newapi中没有就直接写入
5 进行渠道测试, 选择三角 选择 流式

6 new-api 中创建 apikey
7 进行 cc-switch 配置 codex, 这里要加 /v1
8 使用 codex


第三方登录 OAuth
linux.do
- 在 linux.do 选择 应用接入

- 保存后显示接入信息, 将这两项写入 NewApi 配置


- 完成配置
设置
自动禁用渠道(状态码/关键字)

问题
无法访问 https
# 确认 443 端口已释放(输出应该为空)
sudo netstat -ntlp | grep :443
# 这里因为 xray 占用了 443 端口 先停掉
systemctl stop xray
# 重启nginx
systemctl restart nginx
/etc/nginx/sites-enabled/new-api 配置文件
server {
server_name api.example.com;
listen 443 ssl; # 仅保留这一行
ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
proxy_pass http://127.0.0.1:3000;
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;
# --- 以下是针对流式传输(Stream)的关键配置 ---
proxy_http_version 1.1; # 必须使用 HTTP/1.1 以支持长连接
proxy_set_header Connection ""; # 清除连接头
proxy_buffering off; # 禁用缓存,让数据即时流向客户端
proxy_cache off; # 禁用缓存
chunked_transfer_encoding on; # 开启分块传输编码
# 解决部分浏览器或客户端因 TCP 优化导致的连接挂起
tcp_nopush off; # SSE 场景下建议设为 off,确保小包立即发送
tcp_nodelay on; # 开启,减少数据包延迟
# 增加超时限制,应对模型“思考”时间过长(如 reasoning 模型)
proxy_connect_timeout 60s;
proxy_read_timeout 3600s; # 延长到 1 小时也没关系
proxy_send_timeout 3600s;
# 针对 HTTPS 场景,防止 SSL 缓冲区影响
proxy_ssl_server_name on;
# 允许最大上传20MB,根据需要调整,0为不限制
client_max_body_size 20M;
}
}
server {
if ($host = api.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name api.example.com;
return 404; # managed by Certbot
}
如果你需要 Xray 处理科学上网流量,而 Nginx 处理 API:
- 方法 A (回落模式): 让 Xray 监听 443,然后在 Xray 配置里设置
fallbacks,将非代理流量转发给 Nginx(此时 Nginx 需改为监听其他端口,如 8080)。 - 方法 B (反代模式): 让 Nginx 监听 443,利用 Nginx Stream 模块 分发流量。
能不能接入 原生 claude code
是可以的 如果是中转的话 要看说明, 比如可以 cherry studio 但不可以 new api 实际上不一定不可以接入 new api 只是上游做了限制, 可以通过请求头 或者 中间加一层, 只要上游不知道就行了
413 Request Entity Too Large
413 Request Entity Too Large 错误通常是因为 Nginx 默认限制上传文件大小为 1MB 所致。
解决方法是修改 nginx.conf 配置文件,在 http、server 或 location 块中将 client_max_body_size 设置为更大的值(例如 20M),并重启或重载 Nginx 服务即可。
- http: 作用于所有站点。
- server: 作用于特定站点。
- location: 作用于特定URL。