博客迁移记
最近更新:2025-10-20   |   字数总计:1.8k   |   阅读估时:6分钟   |   阅读量:
  1. 博客迁移记
    1. 迁移动机
    2. 一些工作
      1. 阿里云服务器
      2. 域名
      3. SSL
      4. 小结
    3. 一些问题与解决办法
      1. 问题
        1. 检测SSL证书失败
        2. Google Search Console验证失败
        3. 手机端无法访问
      2. 解决办法
        1. 分析原因
        2. 尝试备案
        3. 更换服务器

博客迁移记

这篇博客记录我再过去两天将我的博客内容从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的方式进行访问了。

image-20240711161831137

SSL

HTTP是明文传输的,我想改用HTTPS协议,另外还想将所有HTTP的请求自动重定向到HTTPS(端口443)。这样,即使用户访问的是HTTP链接,也会被安全地重定向到HTTPS链接。

但是开启HTTPS需要配置SSL证书。

一开始,我选择自己生成证书,这个可以使用OpenSSL工具完成,最终获得.crt.key文件,然后再编辑apache的配置文件,使得证书生效。

1
2
3
4
5
6
7
8
9
10
11
<VirtualHost *:443>
ServerName jay1an.site
DocumentRoot /var/www/html/jay1an.github.io

SSLEngine on
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/private.key

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

但由于自签名证书不被浏览器信任,每次使用HTTPS协议访问博客时,浏览器都会弹出安全提示,就像下图一样。

虽然点击advanced按钮仍然可以继续访问,并且也是是用了SSL加密传输过程,使用密文传输,但是观感不太好。

image-20240711163142014

所以我决定使用受信任的CA机构签发的SSL证书,可以使用一些免费的工具生成但是日期不是很长,我嫌麻烦就直接上淘宝上购买了一个证书服务,只需要给出域名,店家几分钟之后就会将对应的权威证书发送过来,有效期一年。

image-20240711163623466

然后将这些证书配置到apache中,之后访问https://jay1an.site浏览器就不会提示不安全了。

image-20240711163915518

最后配置HTTP到HTTPS的重定向

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<VirtualHost *:80>
ServerAdmin webmaster@jay1an.site
ServerName jay1an.site
DocumentRoot /var/www/html/jay1an.github.io

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

<Directory /var/www/html/jay1an.github.io>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

# Other settings as needed

</VirtualHost>

小结

到此,在PC端可以使用https://jay1an.site访问我的个人博客,速度比从GitHub Pages上访问快多了,并且现在不会有任何安全风险提示。但是我的网站没有备案,所以通过HTTP协议访问的时候http://jay1an.site会被阿里云拦截,提示该网站未备案所以无法访问,但是在PC端通过HTTPS协议是可以访问的。

一些问题与解决办法

问题

检测SSL证书失败

我想尝试在权威的SSL证书验证网站去验证博客网站的SSL加密套件情况,但是一直失败,情况大致如下图。

img

之后又尝试了SSL Server Test (Powered by Qualys SSL Labs)Why No Padlock?,都没能检测到SSL…..

Google Search Console验证失败

我尝试将博客加入Google Search Console ,在认证所有权这一步被卡住,我当时采用的是HTML文件验证方法,即将特定的HTML文件上传至主页,然后可以通过https:/jay1an.site/filename.html的方式访问到文件即可。神奇的是,我自己的PC端可以通过这样的方式访问到该文件,但是Google无法验证,”提示无法连接到您的网站服务器“

手机端无法访问

我尝试用手机进行访问,当我输入https://+域名 后提示无法访问,失败原因net::ERR_CONNECTION_RESET

一开始我以为是该域名没有被成功解析,但是过了一段时间之后仍然无法访问,并且显示相同的原因,查看详情之后发现域名被成功解析了,但是还是无法访问。

image-20240711170417501

但是直接通过https://+IP的方式却可以访问。

image-20240711170511013

与这个案例类似:

HTTPS无法访问,提示ERRCONNECTIONRESET_问答-阿里云开发者社区 (aliyun.com)

解决办法

分析原因

在查阅资料后,我觉得大概率是因为网站没有备案,因为我的网站挂在阿里的成都服务器上,所以域名解析之后被阿里识别并阻断了。

(但是我不知道为什么PC端可以通过域名访问。。。)

image-20240711170745155

尝试备案

之前域名备案的流程非常简单并且流程也非常快。

但是网站备案的流程有点儿繁琐,并且审核周期非常长要十多天,于是不就不太想给网站备案了。

但是如果将网站部署在中国内地之外的服务器,比如说港澳台和其他国家的服务器,这样就不需要对网站进行备案了,所以我就把阿里云的服务器退了,尝试将网站挂在一个不需要备案的服务器上。

更换服务器

一开始我尝试在国内的云服务厂商上购买香港的服务器,但是配完之后发现这类服务器是不享受优惠的…..最后一年的价格就要一千多………..

之后想起来微软的Azure可以通过学生认证领取免费权益,可以免费使用云服务器资源。

Azure的学生认证非常简单,只需要提供学生邮箱即可,认证结束之后即可领取100USD的额度和750小时免费云服务器使用额度。

Azure中创建了位于一个韩国的VPS

image-20240711172522757

再重新配置apache和SSL,重新改变域名解析结果,等生效之后就转移成功了。

这样就成功解决了因为网站挂在国内服务器需要备案的问题,现在SSL证书可以被成功检测到、Google Search Console也可以验证、手机端也可以正常访问了。

但是,出现了新的问题,当我用国内的网络访问网站时,虽然以前在GitHub Pages上访问要快多了,但是在加载网页的时候仍然有卡顿。