本文介绍利用 CDN 能将 HTTP 请求转换成 HTTPS 的机制,实现临时对未备案域名的使用。

问题

本博客原先是放在新加坡服务器上的,最近发现中国移动 4G 网络无法访问那边的 HTTPS 服务,于是我把它迁移到了国内的阿里云服务器上。可是由于域名没有备案的原因,导致 HTTP 无法访问,出现提示未备案的页面。

我就老老实实的去备案,我之前是备案过一个 .com 域名的,所以我想再次备案应该会很快完成,然而没想到的是 2018 年工信部已经不允许备案 .io 域名了...

于是我又试了下 HTTPS,发现是可以访问的。看来阿里云目前只是检查 HTTP,算是留了条后路。本文就是基于这一点通过 CDN 把所有的请求都转换成 HTTPS 来达到目的。也许以后阿里云能对 HTTPS 也进行备案检测(这应该比较难,因为 HTTPS 是加密的),那么下文所说的方法也就失效啦。

CDN

我首先想到的是 百度云加速,注册试了下,提示未备案的域名无法使用加速;又注册了 360 云加速,要实名认证,觉得麻烦就没继续下去了,也没确定是否可以加速未备案的域名。

又进行了一番搜索,最后发现 Cloudflare 刚好有把 HTTP 请求都转换为 HTTPS 的功能:Always Use HTTPS,于是注册了个免费的套餐,设置始终使用 HTTPS,并在域名注册商那里将 域名服务器 设置成 Cloudflare 提示的。过大概半小时,等这个域名服务器生效,再访问 HTTP,就能自动重定向到 HTTPS 了。

总结

其实这里是利用 CDN 先把 HTTP 转换成 HTTPS 了,HTTP 请求不会直接到阿里云服务器,所以也就不会看到提示备案的页面了。需要注意以下两点:

  1. 网站需要提供 HTTPS 服务;
  2. 如果以后阿里云能对 HTTPS 也进行备案检测那么就是无效的。