文章

我拥有了自己的域名

我拥有了自己的域名...

我拥有了自己的域名

一直使用GitHub Pages提供的免费二级域名,灵活性和可控性有限,因此年末在在[Spaceship](https://www.spaceship.com/购买了一个顶级域名,用于承载自己的站点。

有了独立域名后,感觉闲着晾着也太浪费了,所以决定再进一步做些什么。

Cloudflare DNS 代理

第一件要做的事就是让站点能够通过新购买的顶级域名访问,最省事的方式仍然是使用 Cloudflare 提供的服务,同时顺带接入其基础的安全能力。

此前曾使用过dottk的免费域名,并通过Cloudflare接入使用,但由于忘记续期而失效。这次重新配置时流程已经比较熟悉,整体步骤如下:

  1. 在Cloudflare中添加域名;
  2. 在域名注册商侧将Nameserver指向Cloudflare提供的Nameserver,使Cloudflare成为该域名的权威DNS;
  3. 在Cloudflare侧配置DNS记录并开启代理,通过CNAME Flattening将根域名解析至GitHub Pages提供的站点地址;
  4. 同时为www子域名配置解析,并在Cloudflare中设置重定向规则,使其统一指向主域名;
  5. 在GitHub Pages中配置自定义域名并触发重新部署。

上述配置通过DNS解析、Cloudflare代理层以及GitHub Pages的域名校验机制完成站点绑定,站点访问入口得到统一。

目前部署了我的主站文章站

图片托管 & AList

图片托管

之前为了省事,图片资源直接塞在GitHub仓库里,用着也没出什么大问题,但算不上什么好实践。既然已经单独折腾了域名,那图片资源也顺手一起独立出来。

常见的图片托管方案无非是图床和对象存储(OSS)。看过一些现成图床服务,总体观感都不太行,策略限制、稳定性和清理规则都比较随缘,比如像MIAOMC好像有定删,所以决定OSS了。

为了控制成本,选的还是免费方案,毕竟也不是什么大规模需求就不上阿里云了。目前是用的免费的七牛云,OSS方案包括了10G的免费空间和每个月10G的CDN加速,对个人站点来说够用了。将存储桶设置为公共读权限,并在七牛云侧完成域名绑定后,图片访问本身就算跑通了。

不过有一个小问题是,七牛云的免费套餐只提供HTTP访问能力,当在HTTPS的个人站点中直接引用HTTP图片资源时,浏览器会触发Mixed Content安全限制,控制台会出现类似下面的错误:

1
Mixed Content: The page at '<URL>' was loaded over HTTPS, but requested an insecure element '<URL>'. This request was automatically upgraded to HTTPS, For more information see <URL>

对于需要HTTPS直连源站的场景,无论是自备证书还是七牛云提供,对应能力是付费提供的。这个限制显然无法接受,于是走了一条取巧路线:将对外暴露的图片访问域名同样接入Cloudflare,由Cloudflare提供HTTPS,对内回源至七牛云的HTTP接口。浏览器侧看到的始终是HTTPS,请求也就可以正常加载。

AList

之前一直能看到AList的各种推荐,更多是作为WebDAV使用。当时既没有相关需求,也不太想为了一个“网盘”专门再搞一台服务器,因此基本没放在心上。现在有了对象存储,七牛云的管理系统传文件还是比较麻烦,本地对OSS的读写和管理需求就变得很现实,这类工具才真正派上用场。

不过因为众所周知的AList被卖和开源投毒事件,现在的doc站上面依然有不少广告的状态下,实在是不太敢用,就取了开源实现OpenList(看description写的“A new AList Fork to Anti Trust Crisis”也是很乐了)。当然,我现在还是没有服务器,就走的一个插拔即用的流程,用的桌面版本

在它软件前端可见的部分只有WebDAV挂点,切换到本地管理界面(localhost:5244)后即可添加对象存储。

可参见OpenList的官方文档,需要配的比较关键的字段如下:

1
2
3
4
5
6
7
8
{
  "挂载路径": "/",
  "存储桶": "your-bucket-name",
  "端点": "your-endpoint",
  "地区": "和上面一个对应",
  "访问密钥ID": "填AK",
  "访问密钥": "填SK"
} 

完成配置后,就可以在本地以接近网盘的方式管理 OSS 中的文件,日常使用起来相当顺手。

本文由作者按照 CC BY 4.0 进行授权