MENU

[笔记]博客全站启用腾讯CDN并部署SSL

April 15, 2019 • Read: 1220 • 技术杂谈

昨晚临睡前不知为何想起了这件事情,今天就动手搞起来,原本以为很简单,结果...,因为Typecho的配置文档不完全(可能是我没找到),搞了三个多小时才部署完成。

先看看部署完成之后的测试效果:


测试地址:http://www.17ce.com
效果详情:http://t.cn/EXxl43M
各节点已缓存的情况下
---效果图片---
CDN效果.png

博客配置:阿里1H1G1M小水管(速度快不到哪去),两个阿里域名(qzone.work,qzone.club),面板使用的宝塔,原来已经配置SSL。

顺便把配置及部署流程记录一下。

1.腾讯云配置CDN

进入腾讯云控制台->腾讯CDN(国内)->域名管理
->添加域名(域名必须已备案,源站设置填写博客服务器IP,其它按需设置)->添加完成->返回域名管理
Cname.png

2.域名CNAME绑定

进入阿里云控制台->云解析DNS->对于域名->解析设置->添加记录->对应域名CNAME添加记录(CNAME是腾讯CDN值,对应添加)
云解析DNS.png
进入这里,等待腾讯CDN部署完毕,基本就可以访问了。

如何判断CDN是否生效?

进入测速平台(https://www.17ce.com/) ,输入地址开始测试,看返回结果中的解析IP是否是自己的服务器IP和数量,如果不是,且数量不止一个即成功,如下图(已成功)
测试.png

3.部署SSL

像我的博客,原来是可以通过SSL进行访问的,但现在启动CDN访问之后,再通过SSL访问会报红(原因:浏览器缓存)

进入宝塔面板->网站->设置->关闭SSL
宝塔关闭SSL.png

提取证书,原来博客的SSL是通过宝塔(Let's Encrypt)免费申请的,拿出来同样可用,问题是怎么拿?

当然如果你原来不是这里申请,或者根本没有申请,那你看这里没啥用,这里只讲本博客情况,其它情况也差不多。

宝塔面板首页->文件->点击路径(输入/www/server/panel/vhost/ssl/)->回车访问->选择网站
SSL1.png
SSL2.png

OK,点击编辑即可查看内容,这里告一段落....


开始部署SSL

腾讯云控制台->腾讯CDN(国内)->高级工具
->证书管理->证书配置(开始配置,选择域名,将证书内容,私匙内容对应复制过来,其它不用修改,保存完毕)

保存之后,稍等几分钟,腾讯CDN自动部署.....
SSL3.png


到这里基本就已经配置完成,但是可能因为某些因素而导致无法访问,比如我的博客Typecho,配置之后无法获取本站是否已经启用SSL,导致模板里面出现http://https:// 混用,浏览器出现报红,这里就需要根据自己网站实际情况解决了,这里只说下 Typecho 解决方法

4.Typecho 博客配置启用SSL

这里真的要疯狂吐槽一下官方,文档不全(反正我没找到),博客前台基本没问题,前台主要是模板问题,关键在于你的模板是否支持,这里不讲;

在使用SSL访问的情况下,出现(css,js)资源文件无法加载,后台一直进不去,无法加载原因;程序还是认为资源是http://请求,结果所有请求全部失败...

各种函数、参数追踪,花了三小时,最后发现 Typecho 库文件里面,Typecho_Request 的 isSecure() 方法无法正常判断,为啥?我也不知道,以后有空再研究,就是这个东西...
isSecure.png

文件路径 /var/Typecho/Request.php,大概第238行左左右,追踪之后发现,其实大部分地址前缀获取都是来自本类的getUrlPrefix()方法。
urlprofix.png

分析此函数,最后... ,最后发现只要将:__TYPECHO_URL_PREFIX__ 此常量设置为布尔值 True 即可,Md,转了好半天,好吧,方法出来了。

解决方法:

前面全是分析(废话),找到根目录文件config.inc.php,在适当的地方添加以下代码即可解决。

/** 定义开启SSL (强制性) */
define('__TYPECHO_SECURE__', True);

效果图:
配置.png

为啥吐槽官方?要是直接把这个常量配置在里面,不就可以了???关键是没有,没有,没.....

OK,全部配置完毕.....


Last Modified: June 13, 2020