分享一个支持https的CDN及启用SSL后续问题汇总

在分享这些问题之前,我先分享一个国内支持https的CDN,让个人博客也能无忧启用https,而不暴露真实IP。

我现在用的是腾讯云内测的支持https的CDN,其他人也就暂时用不了。本以为国内基本就没有其他支持https的CDN了,结果晓庄等几个博主留言分享了一个支持https的CDN——VeryCloud。

周末抽空了解并试用了下,发现真不错!而且还有每月免费50G的额度,一般个人博客基本够用了。

分享一个支持https的CDN及启用SSL后续问题汇总

一、云端CDN

①、注册开通

首先,我们在VeryCloud注册帐号并开通云分发:https://www.verycloud.cn/

②、添加证书

我们是冲着https去的,所以第一件事我们先要申请一个免费的SSL证书!当然,张戈博客之前也分享过沃通的免费证书申请地址,所以有需要的朋友先前往申请下:

分享一个免费SSL证书申请网站,给网站开启https协议

Ps:沃通免费证书最近又开放了2年多域名版本,申请时建议把主域名二级域名啥的一并申请到一个证书里(一次最多6个,含www主域)。

现在沃通申请证书基本可以站立得,所以我们可以立马下载到证书包。

解压,取得其中for Nginx的证书,然后在云分发控制台的【证书管理】中新建证书:分享一个支持https的CDN及启用SSL后续问题汇总

如图,输入一个自定义能识别的名称,然后依次上传crt和key文件,并确定即可!CA机构证书的话,免费证书是没有了,至少沃通免费证书绝没有。。。所以忽略吧!

③、添加网站

注册并登陆VeryCloud云端网络之后,启用云分发,并前往云分发控制台的频道管理界面添加新域名

因为我们的目的是要在开启https之后保护IP不泄露,所以我们必须把所有要展示的域名都加进去,比如博客主域名:

分享一个支持https的CDN及启用SSL后续问题汇总

如图,基本只要按中文提示填写即可,其中如果源站没有开启强制https那么可以填写80,而源站要是开启了http强制跳转https的话,那就必须填写443端口,否则CDN会经常异常!

我博客主域名开启了强制https,所以我填写了443端口,二级静态域名没有开启,所以我填写80,区别是填写80能略微降低CDN抓取源站造成的压力。毕竟http还是比https略微费服务器一点!

下面的探测URL就随便填写一个网站存在的地址吧,比如我填写的是ico图标地址。

继续下一步,是设置缓存:

分享一个支持https的CDN及启用SSL后续问题汇总这个可以参考一下张戈博客之前的文章:

如何正确配置CDN高速缓存,避免越用越慢的尴尬

特别注意的是,其中有个静态页面,指的是html、htm和shtml这类页面,一般博客都做了伪静态,所以如果不需要缓存html伪静态页面,请使用自定义或遵循源站,自定义则需要去掉html等后缀。

再下一步则是最关键的https设置了!

备份源站一般博客应该没有,直接忽略,勾选启用SSL加速,开启https:

分享一个支持https的CDN及启用SSL后续问题汇总

接下来的回源方式就和前文提到的80和443的选择异曲同工了,还是一样的道理,如果源站有强制https,那么就必须选择HTTPS协议回源才行!

强制https访问,这是腾讯云CDN都没有的功能,云端提供了!本来我还更高兴的!结果发现这个强制https跳转居然是返回302状态,感觉不是很符合百度推荐的301永久跳转,我个人最后是在源站设置了301跳转。

SSL证书这一项就是选择我们前面新建的那个SSL证书了,无需赘述。

分享一个支持https的CDN及启用SSL后续问题汇总

再往后,基本就不用多说了,自己折腾吧!

二、经验分享

国内免费CDN一般都限制在每月50GB流量,一般博客是够用了。但是发展到一定阶段,50G流量肯定是不够的,比如张戈博客一个月至少上100G的CDN流量,几十块的预算还是要的。

那有没有办法节省一点呢?

这里分享的方法,只适合有多个CDN服务的朋友。比如,张戈博客同时在用腾讯云CDN和云端CDN,我将电信线路解析到了腾讯云CDN,而将默认线路给了云端CDN。

因为腾讯云CDN目前我还有个100G的流量包,先用完再说。

简单来说,就是使用线路分摊的办法来解决这50G不够用的尴尬。当然,如果你只是看到了这篇文章介绍的云端CDN,那就只能等以后慢慢发掘了。。。

三、问题汇总

博客开启https这段时间,着实遇到不少问题,所以下面简单分享一些经验技巧。

①、支持https的视频

我博客之前是有一些在线MV的,开启https之后全部都废了,原因大家也都清楚,https里面的http资源会被浏览器拦截,所以必须要使用https的视频地址才行!

本来我也就懒得维护那些在线MV了,不过偶然在腾讯内部博客平台看到有人问到了腾讯视频是否支持https,正好有相关产品经理回答了这个问题,也给出了解决方法。

很简单,先找到腾讯视频的ID:

分享一个支持https的CDN及启用SSL后续问题汇总

然后使用如下地址即可实现https访问视频了:

https://v.qq.com/iframe/player.html?vid=f0019nr9cdd

②、百度提交https

百度在提倡https之后,站长平台已经支持提交https站点了!

进入百度站长平台,然后删除之前的域名,再添加该域名的https站点即可:

分享一个支持https的CDN及启用SSL后续问题汇总

Ps:不过坑的是,站长平台貌似对https支持不太友好,改成 https之后各种数据都停滞不动了。。

③、微信公众号

微信公众号暂时不支持https,而源站又全站强制开启了https,所以导致公众号也无法提供自动回复功能了!解决办法也很简单:

方法 I:新增一个域名,使用http即可,root路径和主域名一致即可;

方法II:针对POST方法,取消强制https规则即可

Nginx可以这样配置:

将之前强制https跳转规则改成如下即可:

④、CDN公共库

支持https的CDN都有免费额度限制,所以能托管到第三方的尽量托管,能省则省。

比如,我博客用的是1.8.2版本的JQery,以下则是我搜集的一些支持https的JQ公共库地址:

新浪云:https://lib.sinaapp.com/js/jquery/1.8.2/jquery.min.js  (速度不错,博客在用)

百度扒来的:https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/js/lib/jquery-1.10.2_d88366fd.js

貌似是ASP官方的:https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.2.min.js

JQ官方的:https://code.jquery.com/jquery-1.8.2.min.js

下面的同样支持https,非常不错:

Bootstrap官方CDN公共库:http://www.bootcdn.cn/

又拍云CDN公共库:http://jscdn.upai.com/

⑤、http被缓存

这个问题是我在用腾讯CDN的时候出现的,原因是因为腾讯云CDN不支持设置强制https跳转,而且还会缓存http站点,导致访问博客http地址也不会遵循源站的强制https跳转了!

要彻底解决这个问题只能等更新CDN机制了。当然, 如果设置CDN不缓存应该也是可以的。

我们暂时可以利用JS来解决这个问题,将如下js代码加入到header即可:

好了,以上就是本文分享的所有内容,希望对各位有所帮助!

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注