Featured image of post 将域名服务商从Hostinger迁移到Cloudflare

将域名服务商从Hostinger迁移到Cloudflare

为网站更换域名,并将域名服务商从Hostinger迁移到Cloudflare

缘起

Hostinger是一个网络托管服务商,提供域名注册、虚拟主机、VPS等服务。 最近在Hostinger上入手了一个域名,打算把之前建的网站迁移到新的域名上。我一直在使用acme.sh为我的网站生成SSL证书。但是Hostinger不提供可供acme.sh调取的API,因此无法直接用acme.sh为托管在Hostinger上的域名生成SSL证书。Cloudflare是一家基于反向代理为客户提供内容分发网络的服务商,也提供域名解析服务,而且提供acme.sh可用的API,所以我就想将域名服务商从Hostinger迁移到Cloudflare。

迁移域名

创建Cloudflare账户

首先需要创建一个Cloudflare账户,直接创建就行,创建过程没有太多特殊要求。

添加域名

  1. 登录进Cloudflare账户后,进入首页,在首页点击Add a site,输入域名,点击Add site

    Add a site

  2. 然后需要选择一个套餐,这里免费套餐对我就足够了,点击Confirm plan,然后点击Confirm

    Plan

  3. 接下来Cloudflare会扫描域名的DNS记录,定位你的域名之前使用的域名解析服务器,然后Cloudflare会提示你将域名解析服务器更改为Cloudflare的域名解析服务器。

  4. 这里需要登录之前的域名服务商的账户,例如我需要登录hostinger的账户,将域名解析服务器更改为Cloudflare的域名解析服务器。选择你需要迁移的那个域名,会显示域名的状态,以及域名解析服务器的名字,点击Change,按照上一步中Cloudflare给的提示,将域名解析服务器更改为Cloudflare的域名解析服务器。

    Change nameservers

  5. 更改完之后点击Done, check nameservers。然后需要等待一段时间让Cloudflare确认域名解析服务器已经更改为Cloudflare的域名解析服务器,这个过程可能需要几分钟到几个小时不等,Cloudflare确认后会发邮件通知你,等待过程中可以先进行下一步。

    Check nameservers

添加DNS记录

  1. 在Cloudflare的首页,点击DNS,然后点击Add record,添加DNS记录。

    Add records

  2. 将之前在Hostinger上的DNS记录全部添加到Cloudflare上。

迁移网站

生成SSL证书

这里我们使用acme.sh为网站生成SSL证书,acme.sh的安装和使用可参见个人网站的建立过程(二):使用Hugo框架搭建个人网站

需要注意的是,在上面的链接里介绍的生成SSL证书的方法是针对阿里云的,而Cloudflare的API和阿里云的API不太一样,需要使用不同的账户口令,分别是账户名(CF_Account_ID)、区域名(CF_Zone_ID)和口令(CF_Token)。这些都可以在Cloudflare的账户里找到。具体过程可参见acme.sh的使用文档

这里我为所有网站都重新生成了SSL证书。

更改nginx反向代理配置

之前的反向代理配置文件都放在/etc/nginx/vhost目录下,这里我将所有的配置文件中的旧域名都替换为新域名,注意如果在上一步中更改了SSL证书的存放路径,也需要将配置文件中的证书路径更改为新的路径。

更改docker-compose配置

最后将之前搭建网站的docker-compose配置文件中的旧域名都替换为新域名,然后重新启动docker-compose服务。

一些问题

Cloudflare的SSL/TLS加密设置

在做完上面的设置后,在通过新域名访问网站时出现了ERR_TOO_MANY_REDIRECTS的错误: ERR_TOO_MANY_REDIRECTS

这是因为在Cloudflare里SSL/TLS加密设置为了“Flexible”,这里需要将SSL/TLS加密设置为“Full”: SSL/TLS

这样之前的网站就可以通过新域名访问了!

comments powered by Disqus