这篇博客记录我再过去两天将我的博客内容从GitHub Pages迁移到云服务器,以及遇到的一些问题。包括购买域名、解析域名、配置SSL证书以启用HTTPS,以及由于备案问题而更换韩国服务器的过程。
GitHub Pages虽然方便,但在某些情况下需要更高的自定义和控制,并且国内访问Github服务器速度太慢,导致访问博客时加载时间太长,所以最终决定将博客迁移到合适的云服务器上。
首先我选择了阿里云服务器,购买之后,调整安全组,设置ssh、80、443端口开放,设置好root账户密码之后就可以在本机上通过ssh root@ip
的方式连接到服务器。
连接好服务器之后安装apache
服务,从github仓库将博客的内容clone下到/var/www/html
目录下,再调整一下apache
设置。完成之后就可以通过http://ip
的方式访问博客。
由于我购买的云服务器是在西南地区(成都),所以在不开梯子的情况下使用国内的校园网访问,速度还是比之前访问GitHub Pages要快很多(但是也没有很快,下一篇会有原因)。
然后在阿里云上购买了一个域名:jay1an.site
。
设置DNS解析(需要对域名进行备案),等待生效之后就可以通过http://jay1an.site
的方式进行访问了。
HTTP是明文传输的,我想改用HTTPS协议,另外还想将所有HTTP的请求自动重定向到HTTPS(端口443)。这样,即使用户访问的是HTTP链接,也会被安全地重定向到HTTPS链接。
但是开启HTTPS需要配置SSL证书。
一开始,我选择自己生成证书,这个可以使用OpenSSL
工具完成,最终获得.crt
和.key
文件,然后再编辑apache
的配置文件,使得证书生效。
1 | <VirtualHost *:443> |
但由于自签名证书不被浏览器信任,每次使用HTTPS协议访问博客时,浏览器都会弹出安全提示,就像下图一样。
虽然点击advanced按钮仍然可以继续访问,并且也是是用了SSL加密传输过程,使用密文传输,但是观感不太好。
所以我决定使用受信任的CA机构签发的SSL证书,可以使用一些免费的工具生成但是日期不是很长,我嫌麻烦就直接上淘宝上购买了一个证书服务,只需要给出域名,店家几分钟之后就会将对应的权威证书发送过来,有效期一年。
然后将这些证书配置到apache
中,之后访问https://jay1an.site
浏览器就不会提示不安全了。
最后配置HTTP到HTTPS的重定向
1 | <VirtualHost *:80> |
到此,在PC端可以使用https://jay1an.site
访问我的个人博客,速度比从GitHub Pages上访问快多了,并且现在不会有任何安全风险提示。但是我的网站没有备案,所以通过HTTP协议访问的时候http://jay1an.site
会被阿里云拦截,提示该网站未备案所以无法访问,但是在PC端通过HTTPS协议是可以访问的。
我想尝试在权威的SSL证书验证网站去验证博客网站的SSL加密套件情况,但是一直失败,情况大致如下图。
之后又尝试了SSL Server Test (Powered by Qualys SSL Labs)和Why No Padlock?,都没能检测到SSL…..
我尝试将博客加入Google Search Console ,在认证所有权这一步被卡住,我当时采用的是HTML文件验证方法,即将特定的HTML文件上传至主页,然后可以通过https:/jay1an.site/filename.html
的方式访问到文件即可。神奇的是,我自己的PC端可以通过这样的方式访问到该文件,但是Google无法验证,”提示无法连接到您的网站服务器“
我尝试用手机进行访问,当我输入https://
+域名 后提示无法访问,失败原因net::ERR_CONNECTION_RESET
一开始我以为是该域名没有被成功解析,但是过了一段时间之后仍然无法访问,并且显示相同的原因,查看详情之后发现域名被成功解析了,但是还是无法访问。
但是直接通过https://
+IP
的方式却可以访问。
与这个案例类似:
HTTPS无法访问,提示ERRCONNECTIONRESET_问答-阿里云开发者社区 (aliyun.com)
在查阅资料后,我觉得大概率是因为网站没有备案,因为我的网站挂在阿里的成都服务器上,所以域名解析之后被阿里识别并阻断了。
(但是我不知道为什么PC端可以通过域名访问。。。)
之前域名备案的流程非常简单并且流程也非常快。
但是网站备案的流程有点儿繁琐,并且审核周期非常长要十多天,于是不就不太想给网站备案了。
但是如果将网站部署在中国内地之外的服务器,比如说港澳台和其他国家的服务器,这样就不需要对网站进行备案了,所以我就把阿里云的服务器退了,尝试将网站挂在一个不需要备案的服务器上。
一开始我尝试在国内的云服务厂商上购买香港的服务器,但是配完之后发现这类服务器是不享受优惠的…..最后一年的价格就要一千多………..
之后想起来微软的Azure
可以通过学生认证领取免费权益,可以免费使用云服务器资源。
Azure
的学生认证非常简单,只需要提供学生邮箱即可,认证结束之后即可领取100USD的额度和750小时免费云服务器使用额度。
在Azure
中创建了位于一个韩国的VPS
再重新配置apache
和SSL,重新改变域名解析结果,等生效之后就转移成功了。
这样就成功解决了因为网站挂在国内服务器需要备案的问题,现在SSL证书可以被成功检测到、Google Search Console也可以验证、手机端也可以正常访问了。
但是,出现了新的问题,当我用国内的网络访问网站时,虽然以前在GitHub Pages上访问要快多了,但是在加载网页的时候仍然有卡顿。