什么是CDN?它解决了什么难题?国内CDN加Vercel,无服务器使用办法

最近遇到了部分地区vercel即便绑定了自定义域名任然有部分用户无法访问被阻断的情况,于是就打算给vercel套一层国内CDN,既然用户无法访问vercel的ip,那么就让用户去访问国内 CDN的节点,然后再让节点去回源访问vercel即可。

该教程适用于无服务器的情况,如果有自己的服务器就没必要多此一举,而是可以直接使用国内CDN即可。注意大部分国内 CDN使用需要域名进行备案。

什么是CDN?

CDN英文全称Content Delivery Network,中文翻译即为内容分发网络。它是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。

简而言之就是,厂商在全国各地都有很多很多的服务器,每一个服务器我们称之为节点,很多的节点组成了CDN。

CDN工作原理

CDN的工作原理就是将源站的资源缓存到位于全国各地的CDN节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,避免网络拥塞、分担源站压力,保证用户访问资源的速度和体验。

在用户与源站之间加了一层CDN,用户先访问 CDN的节点,CDN节点再去源站拿取内容,当用户第二次访问的时候就会直接返回节点上缓存的内容,由于节点离用户近,所以用户拿到资源的速度就会缩短,访问也就变快了。

访问优先级
通常情况下,中国内地的网络质量有以下特点:
用户访问同运营商的 IP 地址过程中的网络质量优于访问跨运营商的 IP 地址过程中的网络质量。
用户访问同省运营商的 IP 地址过程中的网络质量优于访问跨省运营商的 IP 地址过程中的网络质量。
用户访问跨省同运营商的 IP 地址过程中的网络质量优于访问同省跨运营商的 IP 地址过程中的网络质量。

自定义域名解析

在域名服务商进行域名解析

分两种情况,你要接入的国内CDN是否支持自定义host(目前测试腾讯云、多吉云都支持)

国内CDN支持自定义host

docs.anheyu.com 境内地区 通过cname解析 到对应的国内CDN提供的cname域名
docs.anheyu.com 境外地区 通过cname解析 到cname.vercel-dns.com,来通过vercel的校验

国内CDN不支持自定义host

docs.anheyu.com 境内地区 通过cname解析 到对应的国内CDN提供的cname域名
docs.anheyu.com 境外地区 通过cname解析 到cname.vercel-dns.com,来通过vercel的校验
vcl-docs.anheyu.com 通过cname解析 到cname-china.vercel-dns.com,来通过vercel的校验

vercel配置

我以文档域名 docs.anheyu.com 举例,将项目部署在vercel以后先绑定自定义域名

vercel绑定自定义域名

如果你的国内CDN支持自定义host的话,只需要绑定一个自定义域名即可,如果你的国内CDN不支持自定义host的话,需要绑定两个自定义域名,此处我绑定了两个作为演示。

国内大厂CDN一般都支持自定义回源host

目前测试过多吉云腾讯云都是支持自定义回源host的

配置国内CDN

多吉云为例(毕竟免费 20G,还能设置封顶策略)

进入域名管理添加域名

进入域名管理

添加加速域名

国内CDN支持自定义host
回源域名填写 cname-china.vercel.com
回源host选择 与加速域名一致 即为 docs.anheyu.com

改动回源host的目的是为了让vercel那边知道你需要回源到的域名。

国内CDN不支持自定义host
如果你的国内CDN不支持选择回源host的话,你就需要使用到刚刚绑定的第二个自定义域名:
回源域名填写 vcl-docs.anheyu.com
回源host就自动会和回源域名一致,就不用担心这个问题了,因为你直接回源到了一个国内能够被访问的域名vcl-docs.anheyu.com

配置完了以后记得需要在国内 CDN这边上传自己的 ssl证书,否则会报ssl错误。

写在最后

为什么不直接回源vercel自带的.app域名?

因为vercel自带的.app域名目前被墙,国内CDN无法访问回源到vercel自带的.app域名,所以也就无法加速呈现出内容了。

如果还有其他问题欢迎一起探讨,目前主题文档使用的就是这种方式来解决的部分地区无法解决的问题。

为什么不直接使用多吉云放服务器上加速?

一开始就说了,因为文档压根就没有想过要放在自己服务器上,一来是为了防止被攻击,毕竟vercel免费,但是如果有自己的服务器的话,还是建议直接放服务器上面进行加速,速度会更加可观,钱也很可观。