准备工作

内容简介

我们将通过 Cloudflare 的免费服务,实现域名分发。

本项目将采用以下技术栈:

  • 后端方面
    • 使用 AXUM Web 框架和 Tokio 运行时
    • 使用 PostgreSQL 数据库
    • 使用 sqlx 进行数据库操作
    • 使用 reqwest 进行 API 请求
    • 使用 lettre 发送邮箱验证码
    • 使用 Cloudflare Turnstile 进行人机验证
  • 前端方面
    • 使用 React 框架构建单页应用(SPA)
    • 使用 Tailwind CSS 和 Shadcn UI 构建 UI

最后,我们还会将前端SPA直接嵌入到我们的二进制文件里。

本专题使用及个域名进行教学:

总体结构

大纲

从以上思维导图很清晰看到,本项目的大纲。

准备工作之:将域名托管到 Cloudflare

这是一些先决条件,开始之前,你必须将你要分发的域名托管到 Cloudflare(简称 CF,下同)。

  • 注册并激活 CF 账号。CF注册非常简单,只需要验证邮件即可完成。
  • 将域名的NS记录修改为CF的NS。每个 CF 账号甚至相同 CF 账号不同域名的NS记录都不一样。
  • 等待几分钟即可生效

准备工作之:Cloudflare 域名设置

关闭 WebSocket 和 gRPC 支持

为了避免用户使用我们提供的域名进行一些不正当行为,我们需要把 WebSocket 和 gPRC 支持关闭。

CF 默认开启了 WebSocket,请按以下步骤关闭:

选择域名 - Network(网络)- WebSockets,将其关闭,如下图所示:

关闭WS

CF 默认并未开启 gRPC,你可以在同一页面检查是否关闭。如下所示:

关闭gRPC

将 SSL 证书修改为“弹性”(Flexible)

为了兼容用户自己的证书,我们需要把 CF 中的证书等级修改为Flexible(弹性),这样既能保证安全,有不限于CF签发的证书。

  • 选择域名 - SSL/TLS - Overview

    ssl1

  • 点击 Custom SSL/TLS 里面的 Select

    ssl2

  • 选择 Flexible 并点击 Save 按钮

    ssl3

[可选]关闭“强制HTTPS”

如果你的域名分发允许用户使用 HTTP,可以关闭 Always Use HTTPS(该选项默认关闭);否则,将其打开。

为了用户可以正常申请第三方证书,本专题将其关闭。

强制HTTPS

准备工作之:API ID 和 Token

获取域名的API ID

选择域名,在 Overview 页面的右下角,有 API 信息,里面分别有 Zone ID 和 Account ID

API ID

获取Token

My Profile - API Tokens页面(左上角用户图标 - My Profile - API Tokens),创建或管理 API Token。我们点击 Create Token 按钮来创建一个 Token,如图:

token-1

然后点击 Edit zone DNS 右边的 Use template 按钮:

按如下选项进行创建:

token-3

创建好之后,将 Token 复制保存起来。

Token 只显示一次,请妥善保管

token-4

代码仓库

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

要查看完整内容,请先登录