念念不忘
必会回响

通过CloudFlare SaaS实现域名CNAME接入CloudFlare并开启CDN

闲来无事,发现邮箱中还有之前在云筏开通CloudFlare Pro的邮件,想着要不再开一年算了反正也不贵,结果发现现在好像都不卖CloudFlare Pro了,看了几个博客说是官方暂停了相关的API。于是就放弃了,没想到在Cloudflare Pro 有没有低价开通的渠道-美国VPS综合讨论-全球主机交流论坛 – Powered by Discuz! (hostloc.com)中发现有人提到了CloudFlare Saas可以实现CNAME接入,这样不就可以实现境外的用户访问CloudFlare CDN,国内直接访问源站了,极大程度上保护了源站IP不被直接发现,还能借助CloudFlare的CDN抗住一点网络攻击,提高境外用户访问速度。于是就准备折腾一下,并记录在此,对于有些疑问的地方我也做了一些说明。

1. 前提

  • CloudFlare 账户一个,并且该账户中已经有接入的域名,在后面的文章中皆以 tvzr.com为例。
  • 云服务器一个(一般时国内的,国外的就直接套了)
  • 已备案的域名一个。

2. 在Cloudflare中解析域名

首先,将已经接入CloudFlare中的域名新增一个A记录的解析,例如我的解析内容:

如图中红框所示,我新增了一条解析,cdn.tvzr.com 指向了我阿里云服务器的IP。并且需要开启代理。

注意:不需要将cdn.tvzr.com绑定到阿里云服务器上。

3. 开启CloudFlare Saas

在SSL\TLS -> 自定义主机名,点击启用CloudFlare Saas。

开启完成后,在回退源处填入第二步解析的域名地址:

点击添加自定义主机名,将你需要代理的域名填写进去,例如本站的dev.net.cn

根据接下来的提示,在主站(dev.net.cn)域名处新增两条TXT的解析,稍等一会儿刷新,确认状态都是有效即可。

注意,还需要设置严格模式,否则会一直提示Too Many Redirects,原因是绝大多数都配置了非http跳转到https。

4. 新增主站域名解析

我的域名托管在阿里云,我就以阿里云为例,新增如下解析。

设置境外来源,CNAME到 cdn.tvzr.com 即可。

略微等一会儿即可生效,为了避免配置出错,我还特地开通了一个美国的VPS用来测试。

root@vultr:~# ping dev.net.cn
PING cdn.tvzr.com (172.67.144.158) 56(84) bytes of data.
64 bytes from 172.67.144.158 (172.67.144.158): icmp_seq=1 ttl=57 time=1.28 ms
64 bytes from 172.67.144.158 (172.67.144.158): icmp_seq=2 ttl=57 time=1.28 ms
64 bytes from 172.67.144.158 (172.67.144.158): icmp_seq=3 ttl=57 time=1.31 ms

此时可以看到,域名指向的IP地址已经变成了CloudFlare的IP。光有这个还不行,通过curl命令查看返回的内容是否正确

curl https://dev.net.cn/303.html

如果打印了网站的源代码,那就说明成功了。

5. 解决Nginx无法获得真实IP的办法

以上操作完,虽然已经可以实现境外用户访问CloudFlare CDN,但还有个小瑕疵,查看Nginx中的访问日志,会发现它记录的IP并不是用户的真实IP,而是CloudFlare的IP。

172.71.150.79 - - [25/Apr/2023:13:02:19 +0800] "GET /303.html HTTP/2.0" 200 14205 "-" "curl/7.74.0"
172.71.150.140 - - [25/Apr/2023:13:03:44 +0800] "GET /303.html HTTP/2.0" 200 14205 "-" "curl/7.74.0"

因为是通过curl访问的,所以没有UA信息。为了记录正确IP,可参考本站的另一篇《使用CloudFlare时Nginx获取真实IP的方法》,配置完成后就可以得到正确的IP地址了。

144.202.94.86 - - [25/Apr/2023:13:10:23 +0800] "GET /303.html HTTP/2.0" 200 14205 "-" "curl/7.74.0

6. 参考

赞(6) 打赏
未经允许不得转载:堆上小栈 » 通过CloudFlare SaaS实现域名CNAME接入CloudFlare并开启CDN

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册