OpenRouter多模型聚合AI中转站搭建教程
为什么你需要一个OpenRouter中转站
OpenRouter是一个聚合了多个大模型API的平台,通过一个接口就能调用GPT-4、Claude、Gemini等不同模型。
但国内直接访问OpenRouter官网或API经常遇到网络延迟高、偶尔被墙的问题。
搭建自己的OpenRouter中转站,相当于在你的服务器上做一个反向代理,本地应用通过这个中转站请求OpenRouter,速度更稳定、配置更灵活。
本文用最精简的步骤带你完成搭建,从零开始,全程可操作。
准备工作:服务器与基础环境
- 一台VPS:推荐最低配置1核1G内存,系统选Ubuntu 22.04或CentOS 7+(本文以Ubuntu为例)。需开启防火墙的80/443端口。
- 域名(可选):如果只用IP访问,可跳过;但HTTPS和稳定性建议绑域名。
- 宝塔面板:新手友好,用下面一行命令安装(SSH执行):
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh
安装完成后记下面板地址、用户名密码,登录宝塔面板。
核心步骤:部署中转代理服务
OpenRouter官方提供了多种接入方式,最常用的中转方式是使用Nginx反向代理。
这里我用一个轻量级的Node.js脚本做转发(你也可以用Nginx直接反代)。
1. 获取OpenRouter API密钥
访问OpenRouter官网注册账号,进入Keys页面创建一个API Key,复制保存。
注意:免费额度有限,建议绑定支付方式避免超额暂停。
2. 安装Node.js环境
在宝塔面板的“软件商店”搜索“Node.js”并安装(推荐版本18+)。
或SSH执行:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - && sudo apt-get install -y nodejs
验证安装:node -v 和 npm -v。
3. 编写并启动中转代理脚本
创建一个目录 /opt/openrouter-proxy,新建 proxy.js:
const http = require('http');
const https = require('https');
const API_KEY = '你的OpenRouter API密钥'; // 替换
const TARGET_HOST = 'openrouter.ai';
const server = http.createServer((req, res) => {
const options = {
hostname: TARGET_HOST,
path: '/api/v1' + req.url, // 只代理API路径
method: req.method,
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
...req.headers
}
};
const proxyReq = https.request(options, (proxyRes) => {
res.writeHead(proxyRes.statusCode, proxyRes.headers);
proxyRes.pipe(res);
});
req.pipe(proxyReq);
});
server.listen(8000, () => {
console.log('OpenRouter proxy running on port 8000');
});
保存后执行:node /opt/openrouter-proxy/proxy.js &(后台运行建议用pm2)。
避坑:只代理/api/v1路径可以防止暴露其他接口;记得替换API密钥;如果报错ECONNRESET,检查服务器能不能访问openrouter.ai:443。
4. 通过宝塔面板配置反向代理
在宝塔面板左侧栏点击“网站”→“反向代理”→“添加反向代理”
- 代理名称:填写任意名称(如“openrouter-proxy”)
- 目标URL:输入
http://127.0.0.1:8000(即刚才Node.js监听的地址) - 发送域名:可以留空或填你的域名
- 高级设置:开启“缓存”和“高级功能”中的“添加响应头”(可选)
关键:在“站点设置”中绑定你的域名(或直接用服务器IP+端口)。
如果只想用IP访问,直接添加一个纯IP站点(宝塔支持)。
5. 启用HTTPS(推荐)
在宝塔面板该站点的“SSL”菜单中,申请Let's Encrypt免费证书,勾选强制HTTPS。
如果使用IP,则无法申请该证书,可考虑使用Cloudflare的Origin CA证书或自签名证书(不推荐生产用)。
避坑指南:常见错误与解决方法
- 端口冲突:Node.js默认8000,如果被占用改为其他端口,并同步修改反向代理的target地址。
- CORS跨域问题:如果前端直接请求中转站,需要添加响应头。在宝塔反向代理的“配置文件”中添加:
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'Authorization, Content-Type';
- API密钥失效:OpenRouter的免费额度使用完后,请求会返回403。建议绑定支付方式开启按量付费。
- 代理路径错误:你的客户端请求地址应为
https://你的域名/api/v1/chat/completions(对应OpenRouter的路径),确保proxy.js中拼接正确。
效果验证:简单测试是否可用
在服务器本地或任意终端执行以下curl命令(替换your-domain.com):
curl https://your-domain.com/api/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello"}]
}'
如果返回包含 "id":"chatcmpl-..." 的JSON,说明中转成功。
你也可以在本地应用(如ChatGPT-Next-Web)中将API地址改为你的中转站URL,测试正常对话。
常见问题FAQ
Q1:中转站速度慢怎么办?
优先选择离你服务器最近的区域(如香港、日本VPS),并开启宝塔的“缓存”功能。
Q2:OpenRouter的收费怎么算?
按模型官方定价的1.05~1.1倍收取,详情参考OpenRouter官网。搭建中转站不会额外收费,只做代理转发。
Q3:能否支持多个API Key轮换?
可以在proxy.js中设计多个Key轮询逻辑,但本文基础版只用一个Key。
Q4:我需要同时代理其他AI平台(如Claude、Gemini)吗?
不需要——OpenRouter本身已聚合,你只需代理它一家即可。如果你想单独代理其他平台,请参考相关教程。
如果你在搭建过程中遇到其他报错,建议先检查防火墙、端口监听状态和日志。
本文的步骤经过多台服务器验证,只要按顺序执行,大概率一次成功。