目前博客是部署到了Github Pages上,具体实现见博客架构说明。
缘由
Github Pages部署有一个问题,就是不支持HSTS。
HTTP Strict Transport Security(通常简称为HSTS)是一个安全功能,它告诉浏览器只能通过 HTTPS 访问当前资源,而不是HTTP。

虽然Github Pages提供了Enforce HTTPS的选项,开启后http请求会301跳转到https 请求。
但是因为返回包缺少Strict-Transport-Security的Header头,导致HSTS校验失败。

为了彻底支持HSTS,决定切换到Cloudflare Pages。
部署
Cloudflare Pages部署非常简单,授权Github仓库权限,配置好分支即可,这里不多介绍。
在Github Pages上,code分支保存原始文件,master分支保存hugo构建后的文件。

Cloudflare Pages这里生成分支选择master,同时禁用其他分支的自动构建。
这样提交代码后,github actions构建文件提交到master分支,然后触发Cloudflare Pages部署。
这里为什么没有采用Cloudflare Pages的自动构建呢?因为很慢,构建一次要3分钟左右。
采用拉取master构建好的文件的话,只需要7秒左右。

补齐Header头
部署好后,Cloudflare Pages的返回也是没有Strict-Transport-SecurityHeader头的。
这里需要通过自定义Header头实现,增加_headers文件,内容如下:
/*
strict-transport-security: max-age=31536000; includeSubDomains; preload

至此HSTS搞定。