GitHub Pages 启用 Cloudflare 加速及 HTTPS
前几天转移域名的时候发现GitHub Pages没有全部开启HTTPS,而且Cloudflare设置的A记录也不全,就重新折腾了一遍,顺便记录一下
配置步骤
Cloudflare
Cloudflare的配置我很早之前就搞过了,再简单写一下,加点图片
- 登录 Cloudflare, 然后点击顶栏的
Add site
- 输入自己的域名,然后点击
Add site
按钮,我这胡乱加了一个没人用的做示范 - 选择方案,一般选
Free
就够用了 - 然后Cloudflare会自动获取域名的DNS记录,这里跳过,拉到页面最底部,点击
Continue
按钮,待会回来再配置 - 复制Cloudflare给出的域名服务器,回到域名注册商那里替换掉原有的
- 回到Cloudflare,点击
Done, check nameservers
- 然后慢慢等待生效,生效后会有邮件提醒,等待生效的时候可以先设置
SSL/TLS
- 在Overview里,将Encryption Mode先设置为
Full
- 然后到Edge Certificates中,开启
Always Use HTTPS
、Opportunistic Encryption
等 - 到Origin Server中,开启
Authenticated Origin Pulls
- 在Overview里,将Encryption Mode先设置为
- 生效后到
DNS
设置里添加四条A记录与一条CNAME记录- CNAME记录的NAME设置为
www
,Content设置为GitHub Pages默认的域名,用户名.github.io
那个 - A记录的Name都使用
@
或者自己的域名,Content依次设置为- 185.199.108.153
- 185.199.109.153
- 185.199.110.153
- 185.199.111.153
- CNAME记录的NAME设置为
- 确认一下各个记录的Proxy status都是
Proxied
状态,即橙色的云朵
GitHub Pages 配置
- 打开自己的网站的仓库设置
Settings
-Pages
- 在
Custom domain
中填入自己的域名,点击Save后会自动生成一个CNAME文件
开启Encryption Full (strict)模式
Full (strict)模式与Full模式的区别在于,Full (strict)模式使用的是由可信 CA 或 Cloudflare Origin CA 签名的有效证书并对每个请求验证证书,而非Full模式使用的无需验证的自签名证书。GitHub Pages可以通过开启Enforce HTTPS
来获取免费的可信证书,满足开启Full (strict)模式的条件。下面就是我今天新发现的问题,我的Pages设置中不能开启Enforce HTTPS
,勾选框一直是灰色的,折腾半天发现是Cloudflare的代理状态的造成的,解决方案如下
- 在Cloudflare的DNS设置中把Proxy status全部设置为
DNS Only
状态,即灰色的云朵 - 回到Pages设置,刷新一下就可以勾选
Enforce HTTPS
了 - GitHub会自动申请SSL证书,有了这个证书才能够在Cloudflare开启Full (strict)模式
- 等待Pages的HTTPS生效后,回到Cloudflare,把刚才修改的Proxy status全部恢复为
Proxied
状态,即橙色的云朵 - 到
SSL/TLS
设置中,将Encryption Mode设置为Full (strict)
DNS记录类型科普
部分内容引用自 维基百科
A记录
A记录(Address record)是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的网页服务器(web server)上。同时也可以设置域名的子域名。它会传回一个32位元的IPv4地址。
AAAA记录
AAAA记录(AAAA record)是用来将域名解析到IPv6地址的DNS记录。用户可以将一个域名解析到IPv6地址上,也可以将子域名解析到IPv6地址上。它会传回一个128位元的IPv6地址。
CNAME记录
CNAME记录(Canonical Name Record),用于将一个域名(同名)映射到另一个域名(真实名称),域名解析服务器遇到CNAME记录会以映射到的目标重新开始查询。CNAME 记录可用于 CDN 加速,通过 CDN 加速别名解析网站域名。
NS记录
NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。如果需要把子域名交给其他DNS服务商解析,就需要添加NS记录。
MX记录
MX(mail exchanger)记录用于指定负责处理发往收件人域名的邮件服务器。
TXT记录
TXT记录一般指为某个主机名或域名设置的说明。
TTL
TTL(Time To Live)表示解析记录在DNS服务器中的缓存时间,长度为秒。当本地DNS服务器收到某一域名的解析请求时,需要向该域名指定的权威DNS服务器发送解析请求获取解析记录。获得的解析记录会在本地DNS服务器中保存一段时间。在这段时间内,如果本地DNS服务器再次收到该域名的解析请求,将不再向权威DNS服务器发送解析请求,而是直接返回保存在本地DNS服务器中的解析记录。