网站建设

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

Jager · 12月27日 · 2015年 · · 16923次已读

之前张戈博客全站启用了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跳转规则改成如下即可:

#若不是POST方法,全部强制https跳转
if ( $request_method != POST ) {
            rewrite (.*) https://zhang.ge$1 permanent;
        }

④、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即可:

<script type="text/javascript">
<!-- 如果是http访问则跳转到https -->
if (document.location.protocol != "https:") {
    location.href = location.href.replace(/^http:/,"https:");
}
</script>

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

45 条回应
  1. 晓庄2015-12-28 · 13:58

    抢沙发前来支持。

    • Jager2015-12-28 · 13:59

      :mrgreen: 这速度杠杠的

      • 晓庄2015-12-28 · 14:01

        哈哈,刚刚再刷新微博。就马上点击进来了

        • Jager2015-12-28 · 14:02

          微博自动同步歇菜了很久了,刚手动分享了一遍,看了我的微博还是有点人气的。。 😆

          • 晓庄2015-12-28 · 14:07

            😆 要的要的。能学到东西的文章要看~

  2. osblog2015-12-29 · 11:50

    真不错啊

  3. aunsen2015-12-29 · 15:25

    看到https这么蛋疼,我就不上了 ➡

    • 电影天堂2016-1-1 · 22:06

      同上~~ 👿
      看到https这么蛋疼

  4. Andrew2015-12-29 · 18:26

    https看来是潮流

  5. Sven2015-12-31 · 18:46

    百度对SSL绝对是坑呀,之前给百度重定向到SSL效果不好,后来还是强制到HTTP的页面。

    • 黑苹果乐园2015-12-31 · 19:29

      强制到ssl后发现百度连TM抓取都抓取不到,百度就是*B中的战斗机,坑!

      • Jager2015-12-31 · 22:36

        百度收录自己的都是http,这真是打脸。

        • 黑苹果乐园2016-1-1 · 20:32

          是啊,吹牛逼跟上好几个,现在对百度定义就是TM一个大网站而已,一个这么大得公司做这点事情,哎,净忽悠这些站长了,啥办法啊,国内就这一条路子。

  6. gamexg2015-12-31 · 21:05

    测试过 winXP 系统吗?
    看楼主证书是独立的,那么应该 winXP 下全IE都无法访问https页面。
    正在考虑sni的问题,查资料发现12月winXP占有率还达到了34%…

    • Jager2015-12-31 · 22:35

      不会吧,还有34%,这不科学。
      用XP的估计是政府或国企等传统办公环境,和我博客撘不上边。

  7. 猫客工作室2016-1-1 · 1:10

    祝福博主跨年快乐,希望可以回访!

  8. 番茄2016-1-2 · 11:52

    HTTPS折腾起来是一项浩大的工程。哈哈

  9. 郑州众源2016-1-3 · 16:11

    不得不说博主扒的真深

  10. 好书网2016-1-3 · 17:55

    支持一下

  11. 郑州SEO优化2016-1-3 · 21:40

    博主的Google申请成功了,不错

  12. 包子2016-1-11 · 13:19

    博主,我申请的谷歌联盟广告刚挂上显示过了一会就不显示,是怎么回事呀? 😥 😥 😥 😥

  13. yangbaicai2016-1-18 · 10:56

    有个问题请教下博主: 博主博客的 wp-content 目录单独设置在 二级域名是如何做的,我用 wp super cache 的 cdn 功能好像有些问题

    • Jager2016-1-18 · 11:58

      就是cdn的域名,回源到主域名即可,服务器无需设置。

  14. IMwenlu2016-1-18 · 14:42

    对于一个小博客来说,想要SSL,只有选择既便宜又有独立IP的香港虚机了

  15. IMwenlu2016-1-20 · 8:19

    一定需要备案才能使用吗?

  16. 小超2016-1-28 · 21:29

    Jager博主,我想问一下,你是怎么添加http的站外友情链接的?那个安全锁还是绿色的,这个有一点好奇,待解决

    • Jager2016-1-30 · 13:52

      不加载的http链接都不会影响https。
      友情链接只是一个描文本,并不会加载资源。

      • 小超2016-1-30 · 18:03

        有点不明白,你的首页的友情链接,点击都是加载的呀

        • Jager2016-1-30 · 20:48

          难道你的有问题?地址发我看看。

          • 小超2016-2-1 · 16:02

            最近吃大餐去了,回复晚了,请见谅,https://www.xiaochao.me,成功了,不过有一个疑问,https的百度推送,你是怎么解决的呀?好像他不支持https的吧?期待博主回复

            • Jager2016-2-1 · 16:33

              除了JS推送不支持https,他的插件还是支持的。看下这篇:https://zhang.ge/5084.html

              • 小超2016-2-1 · 17:00

                好的,谢谢博主

  17. 蔓舞寻樱2016-2-20 · 12:17

    博主,你的源站301是怎么弄的?窝现在也想用这家的cdn,但看到302这里有点不爽~

  18. 22222016-3-2 · 15:05

    22222222222222签到成功!签到时间:下午3:03:14 🙁 ,每日签到,生活更精彩哦~

  19. 22222016-3-2 · 15:06

    写代码

  20. 园子大魔王2016-3-2 · 22:29

    VC是要备案的

  21. 枫木2016-9-10 · 11:09

    博主你好,
    我网站上了https+腾讯云cdn,cdn要求源站地址和加速域名不能一样,我网站服务器配置域名是https,配置的时候无法作为源站使用,填入了服务器ip做源站。
    然后我用https回源,目前看到腾讯新给我一个证书,访问正常,回源的时候,不知道cdn->ip源站,还是到cdn->我nginx配置的https网站呢,怎么才算是cdn配置正确的?

    • Jager2016-9-10 · 12:36

      腾讯云CDN会默认带上host回源,所以你填写IP是没问题的,但是必须选择https回源, 因为你源站应该是做了强制https跳转。可以参考下我之前的分享:https://zhang.ge/5074.html

      • 枫木2016-9-10 · 13:35

        好的,谢谢

  22. 烧香2016-10-19 · 11:02

    老大为何是使用verycloud的CDN以后访问网站的时候偶尔会跳转到源IP地址 多刷新几次又会恢复?

  23. 菊部2016-11-2 · 20:18

    感谢分享

  24. CC2016-11-20 · 20:28

    站点上已强制www。a.com 跳转到a.com http跳转到https 如果要加速SSL 是不是 要添加2个云分发 一个带www 一个不带WWW 的
    还是只添加一个云分发就行了?
    签到成功!签到时间:下午7:37:10,每日签到,生活更精彩哦~

  25. 黑苹果2017-10-3 · 3:36

    请问张大神!全站改版https以后百度自动(实时)推送还管用不?为什么我全站改版https以后!百度自动(实时)推送不管用了?l

  26. 亦可2018-12-29 · 22:49

    博主好,我阿里云开启 CDN + 强制 HTTPS 之后带 WWW 和不带 WWW 的域名,查看返回码都是301,正常吗?谢谢

  27. 寻梦2019-3-15 · 11:13

    国外的可以尝试cloudflare,不过需要转DNS,SSL也支持,有备案的话可以申请节点到中国,就算不转访问速度也还可以。关键是免费,也可以付费尝试些高级功能