背景说明:

XX全球版项目CDN,

原有改之前:主CDN为Akamai,备CDN为Cloudflare。

计划改之后:主CDN为Cloudflare,备CDN为Akamai。

原因:Akamai CDN的流量成本大概是3毛多1GB是比较贵的,比Cloudflare贵很多,故现在为了节省成本,经领导同意,计划将主CDN切为Cloudfalre,备的CDN切为Akamai。从Akamai切为Cloudflare其CDN成本可以节约一半左右的费用。

注意:文档中项目敏感信息已打码。文档中所有域名使用:www.baidu.com代替

感谢辉哥提供的资料

参考文档

# Cloudflare CDN相关api的文档:

https://api.cloudflare.com/#getting-started-requests

https://api.cloudflare.com/#zone-purge-all-files

https://api.cloudflare.com/#zone-purge-files-by-url

https://api.cloudflare.com/#zone-purge-files-by-cache-tags,-host-or-prefix

1.上传或创建SSL域名证书到Cloudflare

  注:如果上传的是自有证书,要注意域名证书的有效期,在到期之前要及时续期并上传新的续期后的域名证书到Cloudflare。

2.创建Cloudflare CDN

  

3.测试Cloudflare CDN

  正常如上创建完成了,接着就可以进行测试和域名解析了。

1、测试获取绑定的随机Cloudflare CDN边缘IP
注:Cloudflare边缘CDN为以.cdn.cloudflare.net 结尾,所以如下 dig时要加上 .cdn.cloudflare.net
[root@wyh-test ~]# dig www.baidu.com.cdn.cloudflare.net +short
xx.18.9.27
xx.18.8.27 2、测试http、 https
#–resolve 参数后的 IP 填写上条命令获取的任意一个边缘ip即可
[root@wyh-test ~]#
#测试 http 80
curl http://www.baidu.com/HotfixAssets/test/test9.log --resolve www.baidu.com:80:xx.18.9.27 -svo /dev/null #测试 https 443
[root@wyh-test ~]#
curl https://www.baidu.com/HotfixAssets/test/test9.log --resolve www.baidu.com:443:xx.18.9.27 -svo /dev/null

4.配置域名解析到Cloudflare CDN's CNAME

  通过CNAME记录将流量指向Cloudflare CDN,具体操作如下:

  登陆域名解析网站(比如AWS域名解析,阿里云解析,腾讯云域名解析网站等,根据实际的来),这里域名baidu.com是AWS S3域名解析。

  则登录AWS S3域名解析,将www.baidu.com解析改为CNAME类型,值为www.baidu.com.cdn.cloudflare.net。

5.Cloudflare API进行Cloudflare CDN自动刷新

  首先,要获取API授权,具体见:通过Cloudflare API进行CDN刷新

  自动或者手动刷新根据自己实际情况选择。(脚本的实现只是提供一个思路,要根据实际项目情况的目录来更改)

5.1 配置腾讯云云函数调用API自动刷新

5.2 配置脚本调用API来刷新

  万一云函数自动刷新有问题,可以使用此脚本方法进行刷新。

1.    [root@xx ~]# cat /data/infra/scripts/cloudflare_cdn_refresh_dir.py
2. # -*- coding: UTF-8 -*-
3. # version: by san at 20201202
4. # cloudflare refresh api
5. import json
6. import requests
7. import sys
8. import copy
9.
10. # 针对目录刷新函数
11. def send_msg_dir(api, url):
12. headers = {'Content-Type': 'application/json; charset=utf-8','X-Auth-Email': 'xx@qq.jp', 'X-Auth-Key': '自己的密钥'}
13. data = {
14. "prefixes": url
15. }
16. r = requests.post(api, data=json.dumps(data), headers=headers)
17. return r.text
18.
19. # 针对文件刷新函数
20. def send_msg_url(api, url):
21. headers = {'Content-Type': 'application/json; charset=utf-8','X-Auth-Email': ' xx@qq.jp', 'X-Auth-Key': '自己的密钥'}
22. data = {
23. "files": url
24. }
25. r = requests.post(api, data=json.dumps(data), headers=headers)
26. return r.text
27.
28. if __name__ == '__main__':
29. #url_dir = ["www.baidu.com/HotfixAssets/Global_OBT"]
30. url_dir = ["www.baidu.com/HotfixAssets/Global_7.0"]
31. url_file = copy.deepcopy(url_dir)
32. url_file[0] = "https://" + url_file[0]
33. mversion=sys.argv[1]
34. version=sys.argv[2]
35. ios=sys.argv[3]
36. number=sys.argv[4]
37. url_dir[0] = url_dir[0] + "/" + mversion + "." + version + "/" + ios + "/" + number
38. url_file[0] = url_file[0] + "/" + mversion + "." + version + "/" + ios + "/" + "PkgVersion.json"
39. print(type(url_dir),url_dir,type(url_file),url_file)
40. api = 'https://api.cloudflare.com/client/v4/zones/2869a40871835d9e79a96b89354be1c3/purge_cache'
41. print(send_msg_url(api, url_file))
42. print(send_msg_dir(api, url_dir)

6.注意事项

  1.实际是一定要先创建一个测试的Cloudflare CDN域名 www-test.baidu.com,测试没问题,然后再进行如上步骤的操作。

  2.如果上传的是自有证书,要注意域名证书的有效期,在到期之前要及时续期并上传新的续期后的域名证书到Cloudflare。

创建Cloudflare CDN的更多相关文章

  1. 创建Akamai CDN

    背景说明: XX全球版项目CDN, 原有改之前:主CDN为Akamai,备CDN为Cloudflare. 计划改之后:主CDN为Cloudflare,备CDN为Akamai. 原因:Akamai CD ...

  2. CloudFlare CDN折腾记-优化设置

    近期又在折腾了,常访问我博客的朋友或许页面曾出现过502错误提示,那是折腾CloudFlare CDN不成功的提示.在此先感谢坛子,在他的执着和求真之下,昨天晚上终于成功使用上CloudFlare C ...

  3. 免费版CloudFlare CDN基本设置参考

    CDN有很多,网上都有介绍,用户比较多的CloudFlare CDN大家都知道,配置起来也比较简单,合理的配置,才能提升网站的速度和网站安全.不同的网站需求配置不一样,以下是我的配置情况,仅供参考. ...

  4. 创建Akamai cdn api授权

    注:通过Akamai Cli purge和通过Akamai API进行刷新之前,都要事先创建类似于如下的刷新的凭据,这两种刷新方式所创建的凭据是相同的. 目的:创建Akamai CDN API授权以便 ...

  5. 通过Cloudflare API进行CDN刷新

    1.Cloudflare CDN刷新说明 1.Cloudfalre同Akamai一样,只有刷新,没有预热的概念. 2.通过Cloudflare API进行刷新,需要用到登录用户的[邮箱][api密钥] ...

  6. 一篇文章带你看懂Cloudflare信息泄露事件

    版权声明:本文由贺嘉  原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/753847001488039974 来源:腾云阁  ...

  7. 申请免费域名并配置DNS解析及CDN加速

    标题: 申请免费域名并配置DNS解析及CDN加速 作者: 梦幻之心星 sky-seeker@qq.com 标签: [#申请,#免费,#域名,#DNS解析,#CDN加速,#子域名] 目录: [网站] 日 ...

  8. 2014年十个优秀的免费CDN加速服务-国内和国外免费CDN

    这是一篇总结近几年来网络上出现了各类免费CDN服务的文章,文章本来应该早就发出来的,但是因为近期的各种原因一直拖到现在.之前部落已经总结了近几年来的优秀免费空间,新手朋友不必在茫茫“网”海中寻找免费空 ...

  9. 国内外CDN服务商CNAME特征串调研

    总结 此篇博文给特定需求的人群使用,通过CNAME的某些特征串,确定其使用的是哪家CDN,大多是国外的CDN,国内的CDN厂商只有几个,格式为:[来源地址]+[截图]+[猜测的特征串],整体博文较长, ...

随机推荐

  1. Sentinel导航

    简介 最近都在弄微服务的东西,现在来记录下收获.我从一知半解到现在能从0搭建使用最大的感触有两点 1.微服务各大组件的版本很多,网上很多博客内容不一定适合你的版本,很多时候苦苦琢磨都是无用功 2.网上 ...

  2. OpenStack neutron vlan 模式下的网络包流向

    时间:2015-01-15 18:09:41 1.什么是Neutron? Neutron是OpenStack的network project ,是NaaS(networking-as-a-servic ...

  3. Java--反射机制——反射 API(Day_04)

    生活中迷茫感的产生,往往源之于坚持一件事放弃的那一刻,因为从那一刻起,你开始变得无聊,变得没有方向感. 运行环境 JDK8 + IntelliJ IDEA 2018.3  本文中使用的jar包链接 h ...

  4. 从栈上理解 Go语言函数调用

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/518 本文使用的go的源码 1.15.7 前言 函数调用类型 这篇文 ...

  5. [leetcode] 45. 跳跃游戏 II(Java)(动态规划)

    45. 跳跃游戏 II 动态规划 此题可以倒着想. 看示例: [2,3,1,1,4] 我们从后往前推,对于第4个数1,跳一次 对于第3个数1,显然只能跳到第4个数上,那么从第3个数开始跳到最后需要两次 ...

  6. harbor搭建及使用

    harbor搭建及使用   1 系统及软件版本 1.1 系统版本 # uname -a Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP ...

  7. THINKPHP_(3)_TP6中实现多层关联,第一个表关联第二个表查询出的数据,再关联第三个表

    问题: (1)canxunDanwei数据表对应的模型中有一个关联是: public function canxunDanwei() { return $this->belongsTo('\ap ...

  8. 华为计算平台MDC810发布量产

    华为计算平台MDC810发布量产 塞力斯的发布会刚刚结束,会上塞力斯SF5自由远征版也确实让人眼前一亮. 全球首款4S级加速能力.1000+km续航新能源作为这款车的卖点. 续航1000+km成了最近 ...

  9. 语义分割:基于openCV和深度学习(一)

    语义分割:基于openCV和深度学习(一) Semantic segmentation with OpenCV and deep learning 介绍如何使用OpenCV.深度学习和ENet架构执行 ...

  10. JS使用Enter事件将输入的字符倒叙输出

    在JavaScript中执行当用户按下Enter键位时将用户输入的字符倒叙输出! HTML代码: <body> <form id="form1" runat=&q ...