2021-11-14更新:百度云加速过期了,CDN 也直接用七牛云的吧。有兴趣的朋友可以看这篇文章《用七牛云作图床并配置 SSL》
2020-11-03更新:已将cdn部署到百度云加速服务。国内使用Cloudflare确实不行,最近看到百度云加速有免费套餐,个人博客来说完全够用了。步骤不复杂,就不详细描述了。步骤大概为:
- 需要域名备案
- 在百度云加速实名认证
- 添加网站时,选择CNAME接入方式。(官方推荐的是NS方式,这样可以全称托管,但我目前只希望托管我的cdn域名)
- 证书管理-证书申请可以免费申请ssl证书
- 安全功能-HTTPS,选择半程加密。这样源站可以不支持SSL
以下为原文:
注意一下,由于众所周知的原因,在国内访问CloudFlare会很慢,
我只是用于个人博客的部分图片使用,所以容忍度会比较高。有高要求的同学,不建议在国内使用。
对于经常科学上网,尤其是自己搭建科学上网的同学来说,CloudFlare一定再熟悉不过了。经常有同学将它套在国外机子上,用来加速流量。因为CF本身就是一个CDN服务,可以用于加速各种服务。
今天我选择用它做我图床的cdn服务。
背景
起因是这样的,这两天发现我博客的背景图加载不出来了,查看网络请求后发现我的图床域名https://cdn.foamzou.com/legacy
被强制使用https
发起请求了。这是因为我的html页面是https的,chrome很不喜欢https页面包含了http请求,认为这很不安全。所以它强制在发起请求的时候在http header加了upgrade-insecure-requests: 1
。该头部会告知服务端,客户端支持将http升级为https。在接下来的http请求中,浏览器会将其替换为https再发起请求。(但我将upgrade-insecure-requests: 1
改为0,还是会替换为https,不确定是不是该头部的原因,也可能是chrome最近自升级加的特性。其它浏览器例如Safari就正常访问)
Ok,已经确定是chrome新版本的特性,将混合内容(mixed content)的http改写为https了。在2019年10月份,google就通过博客发布了chrome关于内容安全的更新时间表: - v79 [2019年12月发布到稳定渠道]:将mixed的脚本文件、iframe升级到https - v80 [2020年1月发布到试用渠道]:将mixed的音视频文件升级到https。虽然允许mixed的图片文件加载,但该站点会在地址栏被标记不安全 - v81 [2020年2月发布到试用渠道]:将mixed的图片文件升级到https 按计划是2月份发布到early release渠道,估计也是前段时间才被更新到稳定渠道,然后自更新导致我的图片挂掉
问题来了,我的图床域名并不支持https,导致ssl握手失败,我的图裂开了!如果要支持的话,我需要在七牛支付一定的费用(https流量没有免费额度),而且需要配置一个ssl证书,可以购买(几千块一年,好贵),也可以上传自定义证书(也略麻烦)。
突然想起我可以把CF套在域名上,CF有免费套餐,一般的需求足够了,ssl证书还不用自己配置。
开干
说干就干,打开官网,没有账号的话注册一个。
添加站点
注意,这里只能填写根域,不支持单独加速子域名。但我只想加速某个子域名怎么办?没事,后面步骤可以配置。
选择套餐
选择免费的就可以啦
修改代理状态
选择完套餐后,CF会将你域名的解析记录带出来,如下图
在代理状态那列点击小图标可以切换状态。现在有两个状态可以切换,已代理
和仅限DNS
。注意,对于你不希望走CF的域名,请设置为仅限DNS
,这样CF只会帮你将域名解析到你的源ip,而代理则解析到CDN节点,再帮你回源。
由于CF在国内的网络情况并没有阿里云这些本地的厂商好,所以博客域名我没有走CF,只是代理了file.zoufeng.net
好,点击继续。
修改域名的DNS服务器
这一步需要到你的域名管理台(在哪买的域名就去哪),将原来的DNS服务器删除,换成CF自己的。完成之后点击蓝色按钮。
设置ssl
点击SSL/TLS按钮,将选项修改为灵活
,这样CF节点支持ssl,而源服务器不需要ssl。完全
的话,源服务器就需要支持ssl了。我的七牛图床域名不支持ssl,所以选择了灵活。这也是本篇文章的最开始的目的。
等待生效
等吧。修改DNS服务器那一步耗费的时间可能会长一些。你可以通过ping命令检查是否已经解析到CF的ip了。
其它
你可能看到上一张图有很多菜单:缓存、防火墙、worker等。CF挺多功能的,有兴趣的话,注册一个玩玩吧。worker就是serverless那东西,类似AWS CloudFront的lambda@edge