• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

借助腾讯云CDN开启全站https及问题解决分享

建站经验 admin 1年前 (2018-06-23) 300次浏览 已收录 0个评论

“眼尖”的朋友,已经看到张戈博客已全面启用 https 了,当然这几天站点 502 也是常用的事情。不过到我写这篇文章为止,应该算是安定了下来。

自从百度推荐全站 https 以来,一直就想让博客跟上这个节奏。可惜,国内所有的免费 CDN 都不支持 https。所以要开启 https 势必要暴露网站真实 ip,按照现在张戈博客被攻击的节奏,估计一暴露就没有了安生的日子!

偶尔的心血来潮,百度了一把支持 https 的 CDN,打开了腾讯云的一个 Q&A:

1.3CDN 支持 https 吗?

https 目前处在邀请测试阶段,暂时还不提供申请,还请谅解。我们正在完善此特性,一旦产品成熟,我们会第一时间公布,敬请期待。

呵呵,邀请测试是么?既然是自家的产品,那还是毛遂自荐吧!

于是找到了公司腾讯云的产品经理,说了我这个想法,于是有幸就用上了国内这个为数不多的特权。

虽然,走的是后门,但是测试责任还是得尽好才是,因此也和产品经理没少交流。博客全面 https 化也遇到了非常多的问题,下面就让我来细细道来。

借助腾讯云CDN开启全站https及问题解决分享

一、http 回源

腾讯云 CDN 默认是 http 回源,这样就有一个问题:因为我们要全站 https,不想有 http, 那么势必需要将 http 的请求 301 到 https 上。这时腾讯云通过 http 过来请求源站,那么请求到的就是 301 了!这也是前些天张戈博客时不时来一个 502 的原因了。大部分请求对 301 的支持不是很完善。。。

借助腾讯云CDN开启全站https及问题解决分享

刚开始还无法自行设置回源模式,还好我用上不久,就发布了新版本,支持回源选择。妥妥的选择了 https 回源。然后静态文件我没有做强制 https,因此静态文件我选择 http 回源,略微优化一下负载。

二、微信公众号

如上设置之后,又发现了一个新问题,微信粉丝跟我反馈,公众号不能自动回复了!

检查了下,原来是因为公众号只支持 http 模式的 token 请求,因此微信公众号的 http 请求得到的也是 301 结果,导致自动回复失败!

看来全部跳到 https 也是行不通的。测试了半天,最后用如下 nginx 规则搞定:

另外值得说明的是,如果开启了强制 https 的站点被其他域名反向代理(比如张戈博客用到的 res.zhangge.net),那么 proxy_pass 也需要指向 https 才行:

比如:proxy_pass https://zhangge.net;

否则反向代理可能会 502!和之前腾讯云不支持 https 回源选择一样的结果。