目前博客是部署到了Github Pages上,具体实现见博客架构说明

缘由

Github Pages部署有一个问题,就是不支持HSTS

HTTP Strict Transport Security(通常简称为HSTS)是一个安全功能,它告诉浏览器只能通过 HTTPS 访问当前资源,而不是HTTP。

20220729232638

虽然Github Pages提供了Enforce HTTPS的选项,开启后http请求会301跳转到https 请求。

但是因为返回包缺少Strict-Transport-Security的Header头,导致HSTS校验失败。

20220729234321

为了彻底支持HSTS,决定切换到Cloudflare Pages

部署

Cloudflare Pages部署非常简单,授权Github仓库权限,配置好分支即可,这里不多介绍。

Github Pages上,code分支保存原始文件,master分支保存hugo构建后的文件。

20220729234310

Cloudflare Pages这里生成分支选择master,同时禁用其他分支的自动构建。

这样提交代码后,github actions构建文件提交到master分支,然后触发Cloudflare Pages部署。

这里为什么没有采用Cloudflare Pages的自动构建呢?因为很慢,构建一次要3分钟左右。

采用拉取master构建好的文件的话,只需要7秒左右。

20220729234651

补齐Header头

部署好后,Cloudflare Pages的返回也是没有Strict-Transport-SecurityHeader头的。

这里需要通过自定义Header头实现,增加_headers文件,内容如下:

/*
  strict-transport-security: max-age=31536000; includeSubDomains; preload

20220729234942

至此HSTS搞定。

HSTS资料