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

之前张戈博客全站启用了 https,并分享了相关经验心得。用了一段时间,问题还是不少,所以继续整上一篇文章,汇总一下网站启用 https 之后出现的问题以及解决办法。

在分享这些问题之前,我先分享一个国内支持 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 即可:

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

评论已关闭!