PHP+CMS+网站 · 2019年10月24号 0

CDN加速之cloudflare 多域名共享同一个配套

根据cloudflare的政策,每一个配套cdn只能开放到同一个域名,如果需要让多个域名同时使用这一个配套加速,那么就需要购买更多的配套,这无疑让我们的成本大幅增加

假设我们购买商业版本的cloudflare配套,那么他们的售价是$200(折合人民币1300多)/域名,如果说我们同时需要针对5个甚至10个或者更多域名加速的话,那么就需要$200 * N的成本,这显然无法接受

为了验证这个配套是否真的只能解析到一个主域名,我们可以做如下测试

首先,默认主域名为a.com,其他域名为b.com,c.com

其中a.com为付费套餐,可以正常使用cloudflare的加速服务

那么,在cloudflare的管理面板里面,该套餐无法直接增加别的主域名,我们需要采取迂回方式

1.使用sub.a.com之类的子域名解析到目标服务器并开启加速,
2. 将b.com,c.com域名使用cname格式解析别名记录到sub.a.com(这样我们就可以使用别名记录转发到目标服务器,同时由于sub.a.com开启了加速服务,如果cloudflare没有进行限制,那么就可以正常使用业务,下面的话就不需要接着看了)
3. 目标服务器对a.com,b.com,c.com进行绑定,以让域名成功请求到主机)
4. 等待10分钟左右,使用dos命令ping查看所有解析是否成功加速(如果解析成功,你看到的目标服务器ip就会切换为cloudflare提供的加速ip,CDN会默认隐藏真实服务器IP)
5. 加速成功以后分别访问a.com,b.com,c.com,查看是否能够正确打开网页
6. 如果都能够成功访问你的website,那么就无需看下去,如果你看到的页面为cloudflare提供的错误页面,错误信息为Error:1001的话,请接着往下看

/——————————————————我是美丽的分割线————————————————————————-/

啊哈,既然你决定接着往下看,那么就说明你现在被cloudflare拦截了

下面我们就来配置一个配套开放多个域名的方法

打开cloudflare的DNS解析页面,找到custom nameservers

custom nameservers (自定义NS服务器),具体作用请通过百度大神了解,

自定义NS服务器,这里可以让你把当前加速域名分配子域名作为ns服务器,你可以添加ns1,ns2,ns3具体看你自己怎么喜欢怎么来

完成了?很好,那么接着往下看

你以为设置完NS服务器就没事儿了吗,没这么简单,刚刚设置的ns服务器子域名记好了吧。

下面在DNS Records中为ns服务器子域名添加A记录,把每一个ns子域名添加多个目标服务器的IP地址,建议多个子域名不要重复添加。分别设置不一样的IP ,这可以提高域名解析的响应速度(这里需要说明的是,nameserver的ip地址请确保真实有效。建议使用你自己的服务器IP,别的IP我也没试过,具体怎样不太清楚)

由于在配置过程中我的服务器拥有4个IP地址,因此我为Custom Nameservers 分配了2个NS服务器,分别是ns1和ns2

DNS Records里面分别给ns1和ns2各分配2个ip(ns记录中关于多个IP的说明,为了让域名更快的响应,ns会采用轮询模式自动分配离访问者更近的服务器IP地址进行处理)

增加别名记录,由于需要让其他域名使用cname通过cloudflare加速再访问服务器,因此,配套域名需要创建一个子域名作为其他域名的别名记录

配置如下

alias CNAME 127.0.0.1

alias CNAME 192.168.1.1

alias CNAME 172.23.0.1

可以看到,上面我做了3个别名记录,记录头为alias,目标ip分别是127.0.0.1,192.168.1.1,172.23.0.1,那么也就是说,其他域名cname到alias.a.com的时候,会转向目标IP为127.0.0.1,192.168.1.1,172.23.0.1的服务器

别名记录配置完成后,把其他域名的NS服务器更新到a.com中的Custom Servers

然后在DNS解析记录里面设置你CNAME解析 

@ CNAME alias.a.com

www CNAME alias.a.com

所有域名均使用相同操作

等待解析成功,然后打开你的域名试试能否访问服务器

什么?还是Error 1001

配置流程有误?

No ,我都检查过,全部严格按照流程走的

这是为什么?其实很简单,虽然你根据上面的所有流程走了一遍还是会报错,这是因为cloudflare在他的数据库里面并没有发现你其他域名有加入站点,所以他们的程序会给出error 1001的错误

so,既然知道具体原因,那就很好办了,我们在cloudflare把其他域名都加入到站点列表当中吧,这里直接默认下一步就好了,不需要进行其他任何操作

包括更改dns和付费。

为了顺利加入站点到列表,你在套餐选择的时候选择free即可

大功告成,现在再次刷新你的域名,时候惊奇的发现,你已经可以成功访问到服务器了。