EdgeOne加速Vercel配置及踩坑

用过 Vercel 的开发者大概都对它的便捷性印象深刻 —— 将 Node 项目推送到 GitHub 后,几分钟内就能自动构建部署并提供访问服务,免费计划也足够日常折腾。但随着 Vercel 域名 DNS 污染越来越频繁,不挂梯子几乎无法访问,好好的免费资源就这么闲置了实在可惜。于是我尝试用腾讯云 EO(EdgeOne)对其进行加速,过程中踩了个典型的坑,最终摸索出解决方案,特此记录分享给有同样需求的朋友。

一、踩坑现场:自信配置却遭遇 522 死循环

核心诉求很明确:利用腾讯云 EO 的免费计划,解决 Vercel 域名访问受阻的问题。我想当然地认为加速配置的关键就是 “回源 Host 填写 Vercel 提供的默认域名(如 xxx-project.vercel.app)”。

按照这个思路配置完成后,满心期待地等待部署结束,结果访问时直接弹出 522 错误 —— 服务器无响应。反复检查配置参数、重新部署项目,甚至更换网络环境测试,522 错误始终如影随形,完全摸不着头脑。

二、问题本质:多层 CDN 嵌套导致回源失效

我翻了一圈 CDN 加速的核心原理文档,再结合 Google 到的案例,终于理清了 522 错误的根源,本质是多层 CDN 嵌套引发的回源链路异常

  1. Vercel 默认域名的本质:xxx-project.vercel.app 并不是直接指向项目服务器的 “源站地址”,而是 Vercel 自家的 CDN 边缘节点域名。当我把这个域名填作 EO 的回源 Host 时,EO 实际是向 Vercel 的 CDN 节点发起回源请求,而非项目的真实源站。
  2. 522 错误的触发逻辑:Vercel 的 CDN 节点会校验请求的 Host 头是否匹配其配置的域名,而 EO 向 Vercel CDN 发起的请求,其 Host 头与 Vercel 配置不兼容,再加上跨地域链路的延迟,最终导致回源超时,返回 522 错误。
  3. 我的认知误区:之前误以为 EO 加速是简单的 “反代”,只要填个目标域名就行,忽略了源站是否本身已接入 CDN 这一关键前提。

三、正确配置:两步搞定 Vercel 加速

找到问题根源后,解决方案就清晰了 —— 跳过 Vercel 的 CDN 层,让 EO 直接指向项目的真实源站。具体配置步骤如下,同样适用于加速其他自带 CDN 的海外平台(如 Netlify、GitHub Pages):

1. 获取 Vercel 真实回源 CNAME

首先要拿到 Vercel 项目的 “原始源站 CNAME”(非 CDN 域名),方法很简单:

  • 登录 Vercel 控制台,添加你自己的域名,会给你一个Vercel的CNAME值;
  • 这个CNAME值是 Vercel 源站得 CNAME,我们不要解析这个CNAME值;

2. 腾讯云 EO 核心配置

进入腾讯云 EO 控制台,添加与在Vercel添加的相同的自己的域名,重点修改以下两项:

配置项 正确取值 配置目的
回源域名 第一步获取的 Vercel 原始 CNAME 跳过 Vercel CDN 层,直接指向真实源站
Host 头 你在Vercel添加的自己的域名 让 Vercel 源站正确识别请求来源,通过校验

3. 域名控制台添加 CNAME 解析

到域名控制台,添加 CNAME 解析,注意填的是EO平台给你的CNAME值,而不是Vercel给你的CNAME值。

四、拓展:海外 CDN 加速通用逻辑

这次踩坑让我总结出一个通用规律:当需要用 CDN 加速海外平台时,若目标平台自带 CDN,绝对不能直接用其公开的 CDN 域名作为回源地址。正确的逻辑是:

  1. 在平台添加自己的域名,获取平台的CNAME值,不要做解析;
  2. 在CDN控制台,回源地址填平台的CNAME值,Host 头填平台添加的域名;
  3. 在域名控制台,添加CNAME解析,值填CDN给你的CNAME值;

希望这篇踩坑记能帮到同样被 Vercel 访问问题困扰的朋友,少走弯路,充分利用好免费的技术资源~