山山兔

用 GitHub Pages 给自己的域名搭一个静态站

· 约 557 字

这个站本身就是这样搭起来的。记下步骤,也记下卡过的地方。

做法

  1. 笔记是 Markdown,头部写标题、日期、摘要。
  2. 一个很小的 Python 脚本把它们生成静态 HTML、RSS 和站点地图。
  3. 推到 GitHub,Actions 构建并发布到 GitHub Pages。
  4. DNS 里根域放 4 条 A 和 4 条 AAAA,www 做 CNAME。GitHub 的 IP 从它官方的 meta 接口取,不凭记忆。

三个坑

证书不是一下子好的。 绑定域名后,GitHub 先返回通用证书,过几分钟才换成你的域名证书。这几分钟里 HTTPS 会时通时不通,因为不同的边缘节点换证书的时间不一样。判断办法:同一个地址连续请求几次,并且直接看证书的主体名,不要只看一次的状态码。

CAA 记录要放对。 如果域名上有 CAA 记录,必须有一条允许 letsencrypt.org 签发,否则证书永远发不下来。写法是 0 issue "letsencrypt.org"。

根域的 HTTP 不一定马上跳转 HTTPS。 强制 HTTPS 打开后,www 很快就会跳转,根域的 http:// 可能还要等一阵。这不影响 HTTPS 访问,但别在刚打开的几分钟里就下结论。

验证

不要只看构建成功。要从外面请求每个页面,逐个看状态码和证书是否有效,再看页面里是不是新内容。