Vercel静态站点部署实战:从DNS污染到Cloudflare解析优化
1. 为什么选择Vercel部署静态网站
第一次接触静态网站托管时,我试过GitHub Pages和Netlify,但最终选择了Vercel。原因很简单:它的自动化构建流程实在太方便了。只需要用GitHub账号授权,Vercel就能自动拉取代码、构建并发布,整个过程完全不需要手动干预。对于个人开发者来说,这种"代码推送到GitHub,网站自动更新"的体验简直不要太爽。
Vercel的免费套餐每月提供100GB流量,对个人博客或小型项目完全够用。实测下来,我的导航站运行半年多,流量消耗还不到10%。更重要的是,Vercel支持自动SSL证书、全球CDN加速和即时缓存清除,这些功能在其他免费服务中很少见。
部署过程简单到令人发指:在控制台点击"Add New Project",选择GitHub仓库,Vercel会自动检测项目类型(React、Vue、Next.js等)并配置构建命令。完成后会分配一个[project].vercel.app的临时域名,但这个域名在国内访问经常不稳定,所以建议尽快配置自定义域名。
2. 自定义域名配置实战
在Vercel控制台的Settings > Domains里添加你的域名后,需要到域名注册商处配置DNS解析。以阿里云为例,我最初是这样设置的:
记录类型:CNAME 主机记录:@ 记录值:cname.vercel-dns.com TTL:600秒这种配置下,访问主域名时会经过Vercel的CDN节点。但问题很快就出现了——有时能正常访问,有时会跳转到反诈页面。用站长工具的DNS污染检测一查,发现vercel-dns.com的解析结果全是红色警告,说明这个CNAME已经被污染。
当时尝试的第一个解决方案是改用A记录解析:
记录类型:A 主机记录:@ 记录值:76.223.126.88 TTL:自动这个IP是Vercel的美国节点,实测可以访问,但速度很不稳定。后来又试了专门针对中国区的CNAME:
记录类型:CNAME 主机记录:@ 记录值:cname-china.vercel-dns.com虽然略有改善,但部分地区仍然存在访问问题。这时候我意识到,需要更彻底的解决方案。
3. DNS污染问题深度解析
DNS污染的本质是某些中间环节篡改了域名解析结果。当用户访问你的网站时,本应返回Vercel服务器的IP地址,却被替换成了错误的地址甚至直接拦截。这种现象在国内访问国外服务时尤其常见。
检测DNS污染有几个实用方法:
- 使用多地ping工具(如ping.chinaz.com),查看不同地区解析结果是否一致
- 在本地终端执行
nslookup yourdomain.com 8.8.8.8(Google DNS)和nslookup yourdomain.com 114.114.114.114(国内DNS),对比结果 - 通过在线检测工具(如ipip.net/tools/dns.html)检查域名状态
我当时的检测结果显示,所有国内节点对vercel-dns.com的解析都失败了,而国外节点正常。这意味着单纯修改DNS记录已经无法解决问题,必须考虑更底层的解决方案。
4. Cloudflare解析优化方案
Cloudflare(简称CF)的免费DNS服务成为了我的最终选择。具体操作步骤如下:
4.1 迁移域名解析到Cloudflare
- 在Cloudflare控制台添加站点,输入你的域名
- 按照提示将域名服务器(NameServer)从原注册商(如阿里云)改为Cloudflare提供的地址
- 在阿里云控制台修改DNS服务器为:
algin.ns.cloudflare.com nucum.ns.cloudflare.com - 等待全球DNS生效(通常需要几分钟到几小时)
4.2 配置DNS记录
在Cloudflare的DNS设置中添加两条记录:
类型:CNAME 名称:@ 内容:cname.vercel-dns.com 代理状态:已代理(橙色云图标) 类型:CNAME 名称:www 内容:cname.vercel-dns.com 代理状态:已代理关键点在于开启"代理"功能,这样所有流量都会经过Cloudflare的全球网络,既隐藏了真实IP,又提供了加速效果。
4.3 性能优化设置
在Cloudflare的Speed > Optimization里:
- 开启Auto Minify(压缩JS/CSS/HTML)
- 启用Brotli压缩
- 调整缓存级别为"标准"
在SSL/TLS设置中:
- 加密模式选"完全(严格)"
- 开启Always Use HTTPS
- HSTS建议保持关闭(除非你确定不需要HTTP回退)
5. 实测效果与注意事项
迁移完成后,我用WebPageTest做了前后对比测试:
| 指标 | 直接解析Vercel | Cloudflare代理 |
|---|---|---|
| 国内首屏时间 | 2.8s | 1.4s |
| 可用性 | 63% | 98% |
| TTFB | 320ms | 190ms |
几点重要发现:
- Cloudflare的香港节点对国内访问非常友好
- 开启代理后,原始IP被完全隐藏,降低了被墙风险
- 免费套餐的WAF规则已经能阻挡大部分恶意请求
需要注意的坑:
- DNS变更后,部分地区可能仍有缓存,建议用
cloudflare.com/cdn-cgi/trace检查实际接入节点 - 如果使用Vercel的服务端函数,需要在Cloudflare规则中排除
/api/*路径的缓存 - 国内某些地区对Cloudflare的IP也有干扰,这时可以尝试在Page Rules里设置"Cache Level: Bypass"
这套方案我已经稳定运行了一年多,期间经历过几次网络波动,但从未出现完全无法访问的情况。对于不想备案又希望国内访问稳定的个人项目,这可能是目前最可行的免费方案了。
