原文:https://bra.live/how-to-achieve-global-acceleration-for-overseas-business-for-free/?s=09

最近在做ServBay这个macOS下最好的Web开发工具,经常收到赞叹:网站不备案,在国内没有节点,但为什么访问速度飞快,下载速度也有40M+?到底在基础设施上,你花了多少钱?

我经常笑而不语,回答了一句:这都不花钱,也都不是事。

创业者搞初创项目,能白嫖为啥要付费?这也太不尊重Cloudflare和AWS了。

今天我就来讲讲,这是如何做到的。

1、首先,你要有DNSPod

对!做新项目,也不要忘记为过去的项目打广告。DNSPod的IP库是和ipip强强联手联合打造的,分区域的准确性要说第二,谁也不敢认第一。

想加速,首先要做的就是能把用户的来路区分开。国内用户走专门节点,国外用户走另外的节点。

所以我们首先要把网站的域名转到DNSPod。

这里就用servbay.dev来举例。

2、然后,你要有Cloudflare

Cloudflare的线路和节点是没得说的,全世界的访问速度基本都能维持在前一。而且还免费(够用了)。

但是,这货在中国不行。虽然他们的客户经理天天来撩我,但说实话,除了移动的网络访问速度很快以外,电信和联通的访问速度都很感人。并且吧,时不时抽风没商量。抽起风来妈都不认识的那种。

所以,面向大陆用户提供服务,Cloudflare是不行的。

正常使用Cloudflare,你必须要把域名转到Cloudflare,不然通不过验证。但是,Cloudflare并不提供分区域解析的能力。你没法区分用户来路,只能让Cloudflare自己来区分。你更没办法让某个地区的用户去访问某台服务器,某个节点。这些,都是Cloudflare自己在黑箱里面做了,用户所访问到的节点也都全是Cloudflare的。所以,结论就是,你的域名主不能转到Cloudflare,必须要用DNSPod,没商量。

那么,如何曲线达到这个目的呢?这里,你需要有第二个不常用的域名,专门侍候好Cloudflare。

这里,第二个域名就用servbay.app来举例。

1、先在Cloudflare里面,把servbay.app添加进去,并且验证成功。

2、然后,在Cloudflare的DNS面板,新增加一个域名,指向你网站的实际服务器。这里我拿cname.servbay.app来举例

4、到Cloudflare的SSL/TLS自定义主机名回退源中,输入刚才的cname.servbay.app 。这里表示的是,网站到哪里去获取

5、添加自定义主机名,输入你网站的域名,比如www.servbay.dev,按照下面截图填写

6、添加完成后,到DNSPod添加两条记录,验证域名和用于自动生成SSL证书

先从Cloudflare拿到记录值
再到DNSPod添加对应的记录

7、记录都添加完成后,Cloudflare中看到的应该是正常验证完的数据

3、最后,你要有Cloudfront

为什么是Cloudfront。那是因为Cloudfront每个月有1T的免费流量,而且不像Cloudflare那样有各种乱七八糟见不得人的网站,不会被GFW特别关注。

很多人都没搞懂Cloudflare和Cloudfront,名字长得差不多。但Cloudfront是AWS家的。功能没Cloudflare那么多,但加速,够了。而且节点在香港、日本、韩国、新加坡都有,不像Cloudflare一样要路由回美国。

但是,注意一个坑:Cloudfront对动态内容支持很差,如果涉及到动态内容,一定记得要显式的加上Cache-Control过期头,特别是API接口

1、我们先申请免费的SSL证书

进入AWS Certificate Manager,点击右上角的请求请求公有证书,域名中填入你的网站主域名。建议是添加一个@和一个*,这样就覆盖了一级域名和二级域名的泛域。验证方法选DNS,密钥算法用ECDSA P 256(这个年代没人用RSA了,增加数据包大小不说,还不安全)

2、接着,还是和前面一样,进入申请详情,拷贝验证值,和Cloudflare一样进行DNS验证

3、证书验证签发后,我们到Cloudfront,点击右上角的创建分配,填入源服务器的信息(这里比Cloudflare复杂,仔细看)

填完后,创建分配

4、创建好分配后,会拿到一个域名,拷贝下来

4、最后,回到DNSPod进行分流

前面几部,我们的CDN节点都创建完毕了。最后一步是我们需要回来DNSPod对用户进行分流。

我们分别需要创建两条(三条,考虑到翻墙用户)记录。分别对应大陆、全球、香港(翻墙)的用户。

1、首先,我们要考虑大陆用户。大陆用户要分配到Cloudfront的节点,所以需要拷贝上一步中获得的Cloudfront域名。我们在DNSPod上创建一条www记录,线路类型选择境内,记录值填写Cloudfront的域名

2、然后,我们要考虑大陆用户没覆盖的区域,也就是全球用户。DNSPod的记录类型默认是从小到大覆盖,为了避免某些用户没覆盖到,我们就选择默认作为线路类型。意思就是,只要没匹配到的,都会匹配成默认记录。

两条记录添加完,我们就可以实现了大陆用户覆盖Cloudfront,其他用户覆盖Cloudflare了。

3、再考虑到大陆有大量用户使用香港节点进行翻墙,我们希望也可以覆盖到这批用户,那么我们再添加一条记录港澳台地区,指向Cloudfront。

至此,我们的配置就算是大功告成了。

总结

没啥好总结的,直接访问试试速度吧