API 中转节点搭建指南
本文介绍如何通过Cloudflare的Workers实现简易的中转节点的搭建。
应用:国内通过API转发调用国外大模型。
设备配置[1]
- 设备:腾讯云轻量应用服务器(特惠型实例)
- 系统:Debian 12.13
- CPU:4 核
- 内存:4 GB
- 存储:40 GB SSD
背景
- 不愿在服务器上安装代理如 mihomo 等。
- 国内聚合平台要么不稳定,要么不包含 Gemini、OpenAI、Claude 等API。
- 拥有自己的域名,域名为腾讯云域名[2]。
核心原理
- Cloudflare 提供免费的无服务器计算资源(Workers),可以将国内服务器的请求转发到海外 API。
- Workers 默认分配的
*.workers.dev域名在国内无法访问,需要通过自定义域名服务将 Worker 绑定到自定义域名实现国内服务器等直接访问。 - Cloudflare 需接管域名的 DNS 解析权才可进行自定义域名服务。
flowchart LR
A[国内服务器] --> B[自定义域名]
B --> C[Cloudflare Worker]
C --> D[海外 API]
E[DNS 解析权] --> F[Cloudflare]
F --> B
F --> C
A -. 不可访问 .-> G[默认域名]
转发请求这里以转发 OpenRouter API 服务为例,其他镜像站同理。[3]
步骤
将域名添加到Cloudflare
- 注册并登录Cloudflare账号
- 输入主域名
- 例如
yourdomain.com - 不要
http://或www.前缀
- 例如
- 选择Free套餐
- Cloudflare会自动扫描你现有的 DNS 记录
- 务必将现有 A 记录取消勾选,转变为
DNS only。 - 否则Cloudflare的SSL加密会与你服务器原本的证书发生冲突。
- 务必将现有 A 记录取消勾选,转变为
在域名注册商更改Nameservers
- 登录你的域名注册商控制台(如腾讯云/阿里云)
- 找到域名注册的管理页
- 搜索「域名注册」而非「域名管理」。
- 找到「DNS 服务器」选项
- 替换为Cloudflare提供的Nameserver。
- 通常是两个人名格式的地址:
- 例如:
evelyn.ns.cloudflare.com - 例如:
miguel.ns.cloudflare.com
- 例如:
- 保存设置
- 一般等待几分钟即可生效
- 成功标志:
Your domain is now protected by Cloudflare
创建Cloudflare Worker
本人没有 js 基础,所有代码均由 Gemini 生成并更改,欢迎提出更改意见。
- 进入「Workers & Pages」页面
- 通过点击「Workers Routes」页面中的「Manage Workers」进入「Workers & Pages」页面。
- 通过点击「Build」分类中的「Computer」选项卡进入「Workers & Pages」页面。
- 点击「Create Application」
- 选择「Start with Hello World!」以便后续更改。
- 输入名称并部署
- 例如
api-proxy,下文均以api-proxy为例。 - 点击「Deploy」部署Worker。
- 例如
- 编写带有「数据清洗功能」的代理代码
- n8n 在较新版本中调用OpenAI时,会在发送的JSON中塞入一个
store参数。 - OpenRouter 等镜像站不支持这个参数,导致「400 Invalid Responses API request」。
- n8n 在较新版本中调用OpenAI时,会在发送的JSON中塞入一个
1 | export default { |
- 在预览窗口进行测试
- 在右侧 Preview窗口中,可以看到 Cloudflare分配的默认地址
https://api-proxy.xxx.workers.dev/。 - 不要直接访问主页(502 Bad Gateway)
- 在地址栏的末尾手动加上API数据获取路径:
/api/v1/models - 完整地址应类似:
https://api-proxy.xxx.workers.dev/api/v1/models
- 在地址栏的末尾手动加上API数据获取路径:
- 返回包含模型列表的JSON数据
- 在右侧 Preview窗口中,可以看到 Cloudflare分配的默认地址
绑定自定义域名到Worker
- 进入该Worker的概览界面
- 在「Workers & Pages」页面中,进入刚刚创建的Worker。
- 进入「Settings」并新增一个「Domains & Routes」。
- 选择「Custom domain」,并输入自定义域名。
- 输入规划好的二级域名,如
api.yourdomain.com。
- 输入规划好的二级域名,如
- 等待状态变为「Active」
测试
1 | curl --noproxy "*" -I https://api.yourdomain.com/api/v1/models |
其中 --noproxy "*" 是为了防止VS Code配置了代理服务器。
请将 api.yourdomain.com 替换成真实的自定义域名。
Nest Step
在 n8n 中,只需拉取 OpenAI 节点,并修改其「Base URL」为 https://api.yourdomain.com/api/v1,并填上 OpenRouter 的 API 密钥,即可正常使用。