网站建设

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

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

之前张戈博客全站启用了 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

    抢沙发前来支持。

    • avatar
      Jager 2015-12-28 · 13:59

      :mrgreen: 这速度杠杠的

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

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

        • avatar
          Jager 2015-12-28 · 14:02

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

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

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

  2. osblog 2015-12-29 · 11:50

    真不错啊

  3. aunsen 2015-12-29 · 15:25

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

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

      同上~~ :evil:
      看到https这么蛋疼

  4. Andrew 2015-12-29 · 18:26

    https看来是潮流

  5. Sven 2015-12-31 · 18:46

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

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

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

      • avatar
        Jager 2015-12-31 · 22:36

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

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

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

  6. gamexg 2015-12-31 · 21:05

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

    • avatar
      Jager 2015-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

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

  13. yangbaicai 2016-1-18 · 10:56

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

    • avatar
      Jager 2016-1-18 · 11:58

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

  14. IMwenlu 2016-1-18 · 14:42

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

  15. IMwenlu 2016-1-20 · 8:19

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

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

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

    • avatar
      Jager 2016-1-30 · 13:52

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

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

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

        • avatar
          Jager 2016-1-30 · 20:48

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

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

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

            • avatar
              Jager 2016-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. 2222 2016-3-2 · 15:05

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

  19. 2222 2016-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配置正确的?

    • avatar
      Jager 2016-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. CC 2016-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也支持,有备案的话可以申请节点到中国,就算不转访问速度也还可以。关键是免费,也可以付费尝试些高级功能