用 GitHub Pages 给自己的域名搭一个静态站
这个站本身就是这样搭起来的。记下步骤,也记下卡过的地方。
做法
- 笔记是 Markdown,头部写标题、日期、摘要。
- 一个很小的 Python 脚本把它们生成静态 HTML、RSS 和站点地图。
- 推到 GitHub,Actions 构建并发布到 GitHub Pages。
- 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 访问,但别在刚打开的几分钟里就下结论。
验证
不要只看构建成功。要从外面请求每个页面,逐个看状态码和证书是否有效,再看页面里是不是新内容。