如果你手里有一台 VPS,上面跑了各种服务(比如 Portainer、Alist、Halo 博客等),通常我们只能通过 http://1.2.3.4:8080 这种“裸奔”的方式访问。这不仅难记,而且没有 HTTPS,非常不安全,甚至会被部分浏览器标记为不安全站点。通常我们会想到用 Nginx 做反代,但配置 SSL 证书、续签、配置 nginx.conf 对很多非运维人员来说还是挺繁琐的。
今天介绍一种零成本、无需维护服务器、且最稳健的方案:利用 Vercel 进行代理访问。
本身 Vercel 也支持node项目部署,这里只用 Vercel 进行代理访问应用最大的优点就是:1. 不用翻墙访问 2. 速度快
步骤一:环境准备
在开始之前,我们需要在本地安装 Vercel 的部署工具。
- 安装 Node.js如果你的电脑还没有 Node.js,请先去 官网下载 并安装(LTS 版本即可)
- 安装 Vercel CLI打开终端(CMD 或 Terminal),运行以下命令全局安装 Vercel 命令行工具:
npm install -g vercel
安装完成后,验证版本:
vercel --version
看到版本号说明安装成功。
步骤二:项目结构规划
假设我们需要代理两个服务:
- 网盘服务 (Alist) :http://123.123.123.123:5244
- Docker面板 (Portainer) :http://123.123.123.123:9000
为了方便管理,建议在本地创建一个总文件夹,然后为每个服务创建独立的子文件夹:
My-Vercel-Proxies/ # 总目录
├── alist-proxy/ # 项目 A
│ └── vercel.json
└── portainer-proxy/ # 项目 B
└── vercel.json
步骤三:编写配置文件
这个方案最爽的地方在于:不需要写一行代码,只需要复制粘贴 JSON 配置。1. 配置项目 A (Alist)
进入 alist-proxy 文件夹,新建 vercel.json 文件,填入:
{
"version": 2,
"routes": [
{
"src": "/(.*)",
"dest": "http://116.205.228.147:15244/$1"
}
]
}
- 配置项目 B (Portainer)
进入 portainer-proxy 文件夹,新建 vercel.json 文件,填入:
{
"version": 2,
"routes": [
{
"src": "/(.*)",
"dest": "http://116.205.228.147:9000/$1"
}
]
}
⚠️ 注意: • 将 IP 和端口替换为你自己的真实地址。
步骤四:部署上线
现在我们将这两个项目分别推送到 Vercel
先使用 vercel login 进行登录
vercel login
会弹出登陆页面
- 部署项目 A
在终端进入 alist-proxy 目录,执行:
vercel -A vercel.json --prod
首次部署会有交互式问答,一路回车即可:
Set up and deploy?
-> Y
Which scope?
-> 回车 (选你的账号)
Link to existing project?
-> N
Project name?
-> 回车 (默认叫 alist-proxy)
In which directory?
-> 回车
Want to modify settings?
-> N
等待十几秒,看到 Production: https://alist-proxy-xxxxxxxxxx.vercel.app 即部署成功。
2. 部署项目 B
同理,进入 portainer-proxy 目录,再次执行 vercel 命令。这次 Vercel 会将其识别为一个新的独立项目。部署完成后,你将获得第二个域名,例如 https://portainer-proxy-xxxxxxx.vercel.app。
步骤五:绑定自定义域名(可选)
如果你不想用 Vercel 提供的 .vercel.app 域名,可以绑定自己的域名。
1.登录 Vercel 网页控制台。
2.点击对应的项目(如 alist-proxy)。
3.进入 Settings -> Domains。
4.输入你的子域名(如 pan.yourdomain.com)。
5.去你的域名服务商(阿里云/腾讯云/Cloudflare)添加一条 CNAME 记录指向提供的CNAME即可。
总结
Vercel 毕竟是 Serverless 平台,不适合 需要长连接(WebSocket)的项目,并且免费版对于流量以及请求次数都有最大限制,只适用于个人项目