开篇废话

之所以要自建cdn,原因在于我的域名莫名其妙被nodecache封了,发邮件不鸟人,发了两次工单只理了一次,还只是敷衍的“不影响使用”就不理人了,子域名无法添加,还无法切换线路,严重影响我的使用体验,鉴于这糟糕的售后体验,我决定换用别家cdn,但是上网找了一圈都没找到线路质量比得上nodecache的,于是我想到了自建方案

cdn最简单的原理就是使用一个线路质量好的中转服务器去线路质量差的源服务器拉取资源,所以我们只需要拥有一个线路质量好的服务器,然后通过nginx反代,抓取源站内容呈现给用户即可,中转服务器只承担中转效果,因此对性能要求不大,只需要线路质量好即可。

我的服务器搭配

1.digitalocean新加坡vps(源服务器)

digitalocean算是性价比很高的vps,六美元一月的价格,综合性能非常好,不仅CPU优秀,还使用的是NVMe ssd,更是支持ipv4+ipv6线路,唯一的缺点就是线路质量不行,即使是在东南亚,联通电信也要绕路美国,移动虽然是直连但是速度也很慢。

文章配图
上张图感受一下这个延迟

2.oranme香港纯ipv6 vps(中转服务器)

oranme一个月8人民币的价格也很让人心动,虽然CPU性能不行,硬盘很小,内存也不够,但是其线路很好,国内三网直连,连接digitalocean的新加坡vps速度也很快,拿来做中转机很理想。

虽然oranme只有纯ipv6,但是可以购买付费ipv4绑定到vps上,亦或者你可以使用免费公用的ipv4地址(shields),对于小站而言,完全够用了。

正式流程

这里以我购买的oranme为例,仅供参考,可以考虑其他机子中转(点此进入oranme官网)

在开始之前,请先在源服务器上配置好你的网站,确保其可以访问了再进行中转机配置

如果不能ssh连接的话,请先看看能不能ping通ipv6地址,如果可以但是依然不能连接的话,可以尝试使用网络ssh平台或者用带ipv6的其他机子ssh(比如我就是用的digitalocean连接)

1.安装宝塔面板国际版

之所以安装宝塔面板,主要是其功能强大,可视化方便管理,但是国内版宝塔占用硬盘太大了,对于oranme这种小机而言完全承受不了,不过我们安装宝塔面板的国际版

(点此进入宝塔面板国际版官网)

#Debian安装命令
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh

国际版很轻量,即使是这种小机,两分钟就安装完成了。

但是宝塔国际版默认没有开启ipv6监听,这时候我们就可以使用oranme里的shields连接

打开他们家官网的shields,添加新的shields,并填写相关信息

文章配图

之后复制页面显示的chame添加到DNS解析里即可

文章配图

之后访问http://你的域名,应该就能打开宝塔面板了

宝塔面板还是那个熟悉的界面,连页面ico都没换

弹出网站配置环境的安装,我们只选择nginx就行了,因为中转服务器要数据库啥的也没用

接下来是一个漫长的等待,我安装nginx大概用了一个小时(或者更久?不记得了)毕竟价格摆在那里,性能有限

2.修改hosts文件

在正式配置反代之前,我们要修改一下hosts,确保域名解析指向源服务器。(因为你把dns解析换成中转服务器后,中转服务器解析域名解析到的就是本地,就不会从源站拉取内容)没必要那么麻烦,直接在反向代理那里填写源站IP即可,因此可以跳过此步

需要注意的是,他们家修改hosts需要修改/etc/cloud/templates/hosts.debian.tmpl而非/etc/hosts

在添加了自己的源服务器IP和域名后重启服务器,即可看到/etc/hosts里的内容也被一并更改了

3.配置反代

在宝塔的【网站】界面创建一个网站,域名直接用你的网站域名即可

修改网站配置,添加反向代理(reverse proxy)

如果需要使用https的话记得先开启ssl再添加反代

名称随意,代理地址填写你的网站地址你的源服务器IP,并带上https段(例如https://8.8.8.8 截图有误请无视),发送域名填写你的网站域名,缓存的话建议打开,但是我的wordpress打开缓存后就无法访问,所以我这里是关闭的

这样在访问myhosts.me时,就会先访问我的中转服务器,然后中转服务器会从源服务器(之前hosts里填写的IP)抓取内容

4.配置外网访问

反代弄好了,接下来就是外网访问了,我们继续添加shields

如果需要使用https的话记得先去【my cert】里添加证书

下边的端口记得改成443(截图漏掉了)

我这里使用的是https的设置,如果你不需要https,只需要http,可以以宝塔面板那一步的设置为参考(话说都2021年了还有人不配置https吗。。。)

之后去DNS解析里添加chame记录即可

5.enjoy

这时全部的配置已经完成了,让我们ping一下

绿公鸡真不错

如果配置正确的话网站也能正常打开了

补充点

网站提示太多重定向

这个情况一般是在wordpress会发生,关闭反代设置里的缓存,并修改一下反代配置

添加如下代码到图中位置

proxy_set_header X-Forwarded-Proto $scheme;

同时确保代理经过的是https地址

重点已在图中标注

关于地区分流

该自建cdn的优点就是香港直连速度快,但是这只是对于大陆而言,对于海外地区,cloudflare或许是最优选择,不过好在,我们不需要做选择题,我们可以全都要。

我们可以使用诸如dnspod等支持按访问地区分流的dns解析进行地区分流,然后通过笨牛网等cloudflare parter实现cloudflare chame接入。

这样,我们就可以配置国内访问就解析到香港中转服务器,国外访问就解析到cloudflare,实现访问速度最优化。

如图,境外访问就会解析到cloudflare

给岁月以文明,给时光以生命!