- 支持试读准备工作本专题需要事先做的准备工作。专题完结之后,你可以通过 zliu.tech、liziqi.ggff.net、zlusi.me和reqwest.me 体验我们提供的域名分发服务。
- Cloudflare 常用 API本章我们讨论本专题需要的 Cloudflare API。
- 支持试读项目初始化及配置本章将对我们的项目进行初始化,然后编写配置。
- 数据及模型定义本章我们将对数据表和对应的数据模型进行定义。
- 数据库操作模块本章我们将简单实现一些数据库的操作。
- 支持试读注册 Cloudflare Turnstile 并将其集成到 AXUM 应用中本章将讨论注册 Cloudflare Turnstile 并将其集成到 AXUM 应用中。
- 支持试读开发前端 SPA为了更直观的进行 API 开发,我们先来编写前端 SPA。
- 用户注册及邮箱激活本章将实现用户注册功能:包括数据库操作、邮箱激活账号等。本章包含后端和前端功能。
- 用户登录、退出登录及鉴权中间件本章将实现用户登录和退出登录功能:包括会话管理、鉴权中间件等。本章包含后端和前端功能。
- 用户注册域名本章将实现用户注册域名功能:包括数据库操作、CF API 封装调用等。本章包含后端和前端功能。
- 用户管理域名本章将实现用户管理域名功能:包括修改、删除域名的数据库操作、CF API 封装调用等。本章包含后端和前端功能。
- 支持试读用户积分变动记录本章将实现用户查看本账号积分变动功能。本章包含后端和前端功能。
- 用户修改密码本章将实现用户修改密码功能。本章包含后端和前端功能。
- 后台管理本章将实现后台管理功能。本章包含后端和前端功能。由于后台大部分功能和用户面板的功能重合,所以后台管理功能将集中在本章一个大章来进行全部讲解。
- 把 React 开发的 SPA 嵌入 AXUM 应用中本章将讨论把 React 开发的 SPA 嵌入 AXUM 应用中,并将其部署到生产环境。
准备工作
- 333
- 2024-11-25 12:53:45
本专题我们将构建一个域名分发(即子域名)系统。目前,有很多提供免费域名的服务,如果你想掌握其中的原理,相信本专题能带给你一些启发。
内容简介
我们将通过 Cloudflare 的免费服务,实现域名分发。
本项目将采用以下技术栈:
- 后端方面
- 使用 AXUM Web 框架和 Tokio 运行时
- 使用 PostgreSQL 数据库
- 使用 sqlx 进行数据库操作
- 使用 reqwest 进行 API 请求
- 使用 lettre 发送邮箱验证码
- 使用 Cloudflare Turnstile 进行人机验证
 
- 前端方面
- 使用 React 框架构建单页应用(SPA)
- 使用 Tailwind CSS 和 Shadcn UI 构建 UI
 
最后,我们还会将前端SPA直接嵌入到我们的二进制文件里。
本专题使用及个域名进行教学:
- zliu.tech(2025年11月到期)
- liziqi.ggff.net(2026年11月到期)
- zlusi.me(2025年11月到期)
- reqwest.me(2025年11月到期)
专题结束之后,你可以访问这些域名进行体验。
总体结构

从以上思维导图很清晰看到,本项目的大纲。
- 准备工作(本章):介绍本专题的主要内容,以及一些需要事先做的准备工作。
- Cloudflare 常用 API:将介绍本专题需要的一些API
- 项目设置:将编写整个项目的设置部分
- 用户中心:将编写用户中心模块
- 后台管理:将编写后台管理部分
准备工作之:将域名托管到 Cloudflare
- 注册并激活 CF 账号。CF注册非常简单,只需要验证邮件即可完成。
- 将域名的NS记录修改为CF的NS。每个 CF 账号甚至相同 CF 账号不同域名的NS记录都不一样。
- 等待几分钟即可生效
准备工作之:Cloudflare 域名设置
本专题所有 Clodeflare 截图使用的都是英语。CF 支持中文,你可以自行切换语言,并与本专题截图进行对照
关闭 WebSocket 和 gRPC 支持
为了避免用户使用我们提供的域名进行一些不正当行为,我们需要把 WebSocket 和 gPRC 支持关闭。
CF 默认开启了 WebSocket,请按以下步骤关闭:
选择域名 - Network(网络)- WebSockets,将其关闭,如下图所示:
CF 默认并未开启 gRPC,你可以在同一页面检查是否关闭。如下所示:

将 SSL 证书修改为“弹性”(Flexible)
为了兼容用户自己的证书,我们需要把 CF 中的证书等级修改为Flexible(弹性),这样既能保证安全,有不限于CF签发的证书。
- 
选择域名 - SSL/TLS - Overview  
- 
点击 Custom SSL/TLS 里面的 Select  
- 
选择 Flexible 并点击 Save 按钮  
[可选]关闭“强制HTTPS”
如果你的域名分发允许用户使用 HTTP,可以关闭 Always Use HTTPS(该选项默认关闭);否则,将其打开。
为了用户可以正常申请第三方证书,本专题将其关闭。

准备工作之:API ID 和 Token
选择域名,在 Overview 页面的右下角,有 API 信息,里面分别有 Zone ID 和 Account ID

获取Token
在My Profile - API Tokens页面(左上角用户图标 - My Profile - API Tokens),创建或管理 API Token。我们点击 Create Token 按钮来创建一个 Token,如图:
然后点击 Edit zone DNS 右边的 Use template 按钮:
按如下选项进行创建:

创建好之后,将 Token 复制保存起来。
Token 只显示一次,请妥善保管

代码仓库
本专题代码位于AxumCourse/domain-distribution。注意,只有购买了本专题的用户才能访问该仓库。
