ZZ.AC 域名项目上线一年多了,申请域名的朋友也越来越多。但是在申请和使用的过程中,很多朋友都觉得 ZZ.AC 域名难申请也不好用。其实这是一种使用惯性导致的,ZZ.AC 域名的使用方式与别家不同,大家只是不习惯罢了,并非真得难用。今天写篇比较系统的教程供大家参考。
了解域名
首先要了解 ZZ.AC 域名,解决为什么要注册的问题。在过去的2025年里上线了N多免费域名项目,而且很多域名都已经进入 PSL (Public Subfix List) 列表了。大家有很多选择,那为什么还要申请 ZZ.AC 后缀的域名呢?这是个问题!
如果有兴趣注册,至少应该先阅读这篇文章,这里记录了我对 ZZ.AC 域名项目的再思考,同时也通过链接指向相关的文章。大家在注册 ZZ.AC 域名之前应该先认真阅读。
注册域名
如果决意要注册 ZZ.AC 域名,那就选一个心仪的名字。目前 ZZ.AC 域名使用者还很少,你想要的域名基本都能注册到。域名长度四个字母起,不能包含数字和连字符。建议在有意义的前提下越短越好。
域名需要有明确含义,而且得跟自己相关。比如你叫张三,那么可以申请 zhangsan.zz.ac 或者 zsan.zz.ac。这里的 zhangsan 或者 zsan 都可以视为有明确含义。如果你要申请 lisi.zz.ac 那就得说明 lisi 是什么意思,它与你个人具体有什么关联。
建议尽量申请短域名,越短越好。之前有一个朋友尝试注册 harrywudi.zz.ac,但我看 wudi 和 harry 都是空闲状态,就回信建议,最终他选择了 harry.zz.ac。
不要注册没有意义的域名。比如很多人都会注册类似 aaaa.zz.ac 域名,而且明确说没有意义,就是好记🤦♂️这种申请不会通过。
不要注册跟自己没有关联的域名或者有通用含义的名字。比如有人尝试注册 blog.zz.ac,这怎么可能批准。之前还有很多人用自己女朋友的名字注册,均被驳回。建议让你女朋友自己注册🤦♂️
✏️Note注册的时候需要填写自己的真实姓名,这是基本要求。
除了域名含义要明确之外,申请者还得提供清晰的建站计划。域名注册之后需要在十日之内用主域名发布 HTTPS 网站。很多人好像不理解这里的主域名。假如你注册了 example.zz.ac,这就是你的主域名。诸如 www.example.zz.ac/blog.example.zz.ac 之类的都是子域名,光在子域名建站是不算数的。系统会自动检测,如果未按要求建站真得会回收域名。
一切都准备好之后打开官网 https://nic.zz.ac/ 输入自己在域名,点击 Search 按钮查询。如果该域名可以注册,就会显示 Apply Now 蓝字链接,点击打开申请页面。
在申请页面填写你的姓名、常用邮箱、域名含义和建站计划,不要忘记勾选个人承诺。在这个曾经推崇仁、义、理、智、信的国度里,很多人好像都已经对「信义」没有了概念🤦♂️承诺即负责,如果你不认可这一条那就别提交申请了。
⚠️Important所有申请人都需要承诺我保证不提供虚假信息。如有违反,请官方回收域名。
最后点击 Submit 提交申请。提交之后,系统会给你的邮件发一封验证邮件。点击里面的链接完成验证,方能流转到管理员审批。如果你的邮件服务商,比如 Hotmail 系,反垃圾策略异常严格,请检查验证邮件是不是进了垃圾箱🤦♂️如果验证链接已经过期,你可以重新发起申请。
申请通过之后,你会再收到一封确认邮件,到这里申请就成功了。
你可以到 Whois 页面 https://nic.zz.ac/#/whois 查询自己的域名信息。
✏️Note域名信息,包括申请者的姓名、域名含义、申请时间会向全网公开。但邮箱不会公开!
虽然人个邮箱不会公开,但默认会开通@zz.ac邮件别名。假如你注册了 example.zz.ac 那么给 example@zz.ac 发的邮件会自动转发给你申请域名所用的邮箱中。
域名管理
域名管理是 ZZ.AC 项目非常有特色的地方,它跟市面上同类服务完全不同。很多朋友注册后都很懵逼。其实 ZZ.AC 采用了一种最简单而且最灵活的方式来管理域名。
打开域名管理登录页面 https://nic.zz.ac/#/zone 输入申请邮箱和你的域名,点击发送按键,系统会给你的邮箱发送域名编辑链接。链接长这样子:
https://nic.zz.ac/#/zone?n=example&t=1768101134&s=XXX...
如果没收到,请检查垃圾箱😂
打开链接你会看到如下页面,管理域名就是修改这个大文本框里面的内容:
很多朋友都没见过,也没听过 RFC1035 Zone 文件。其实非常简单。每条 DNS 记录占一行,每行至少包含子域名、记录类型和记录值三个字段。
比如你想将 foo.example.zz.ac 的 IPv4 地址设置为 1.1.1.1 那就添加一行:
foo A 1.1.1.1
如果还想同时设置 IPv6 地址为 2001:db8::1 那继续添加:
foo A 1.1.1.1
foo AAAA 2001:db8::1
这里的 foo 就是子域名,A 和 AAAA 是记录类型,后面的 IP 地址是记录值。
DNS Zone 中的域名有相对域名和绝对域名之分。绝对域名在末尾有句点,相对域名没有。
比如上面的 foo 最后没有点,所以它是 example.zz.ac 的相对域名,对应的绝对域名为 foo.example.zz.ac.。我们平时在浏览器里不需要输入最后点,系统会在解析的时候自动添加,所以大家有点不理解。
我看到很多朋友设置 CNAME 记录会出错:
blog CNAME blog123.github.io
他想着将 blog.example.zz.ac 指向 GitHub 的 blog123.github.io 域名。但是,这里的 blog123.github.io 因为没加最后的点,被当成了相对域名。所以上面的记录实际的效果是将 blog.example.zz.ac 指向了 blog123.github.io.example.zz.ac 🤦♂️正确的写法是:
blog CNAME blog123.github.io.
还有一个特殊情况,就是给主域名设置记录。比如我想给 example.zz.ac 添加 A 记录,但它没有子域名,这该怎么办?答案是使用@符号!
@ A 1.1.1.1
这里的@表示 example.zz.ac 域名。是不是也很简单。
其实 Zone 文件还有另外一种写法:
example.zz.ac. A 1.1.1.1
这样也能给主域名添加 DNS 记录,但要注意最后的点,要写成绝对域名的形式!我也见过有朋友漏掉了最后点,写成了:
example.zz.ac A 1.1.1.1
它实际对应的的域名就变成了 example.zz.ac.example.zz.ac 🤦♂️
有人可能会问为什么要用这么复杂的方式管理域名。原因有二。第一是实现简单,我只要提供一个文档框就可以了,算是偷懒。但这不是最重要的。每二个原因是可以最大程度上支持各种 DNS 记录类型。如果做成界面下拉框的形式,就需要对各类 DNS 记录类型分别做处理,后续 DNS 规范更新后还需要不断修改。很多 DNS 服务商就是跟不上 DNS 规范的更新速度,长时间不支持类似 SVCB/HTTPS 这种新记录类型。ZZ.AC 域名面向个人学习和研究,跟易用性相比,我倾向于选择灵活性。
有需要的朋友也可以注册并配置 deSEC 来管理自己的域名。但使用 deSEC 有两个缺点。首先,无法给根域名设置 CNAME 记录,因为会跟根域名的 NS 记录冲突;另外,deSEC 最小的 TTL 是五分钟,ZZ.NIC 官方解析服务最小 TTL 是一分钟。大家可以按需取用。
更多关于自助管理域名的内容,请参考这篇文章。
主域建站
前面说过,所以有 ZZ.AC 域名均需要在主域名上建立 HTTPS 站点。有朋友说这个门槛有点高,我有点不大理解。
假如你有自己的服务器,那最简单,只要给主域添加 A/AAAA 记录指向你的服务器,然后再使用 ACME.sh + Nginx 或者 Caddy 这类软件搭建 HTTPS 网站即可。
如果你已经有自己的网站,可以通过给主域名设置 CNAME 指向你的网站。
如果你既没有个人服务器,也没有个人站,那是时候新建一个了。建议使用 GitHub Pages 搭建,最简单。假如你的 GitHub 账号是 example,你可以创建名为 example.github.io 的仓库,在里面提交 index.html 文件。稍等片刻就可以通过 example.github.io 域名访问该网面了。
然后根据 GitHub 官方文档1配置主域名记录。因为是主域名,也就是文档中所说的 apex 域名。你可以设置 CNAME 或者 A/AAAA 记录。
如果你是用 ZZ.NIC 官方的解析服务,那最简单,可以直接设置 CNAME 记录:
@ CNAME example.github.io.
如果你坚持用 deSEC 来解析,那只能设置 A/AAAA 记录:
@ A 185.199.108.153
@ A 185.199.109.153
@ A 185.199.110.153
@ A 185.199.111.153
@ AAAA 2606:50c0:8000::153
@ AAAA 2606:50c0:8001::153
@ AAAA 2606:50c0:8002::153
@ AAAA 2606:50c0:8003::153
稍等片刻访问你的主域名就能看到刚才上传的网页了。
✏️Note用这个办法建立的网站基本不用担心域名被回收,
GitHub Pages 很少会出现服务不可用的情况。
除了 GitHub Pages,还有很多服务可选,比如 Gitlab Pages, Cloudflare Pages, sourcehut pages 等等。功能都大同小异,不作赘述。
公益空间
如果你不满足于搭建静态网站,那么可以继续研究 ZZ.NIC 提供的公益 Linux 主机空间。详细信息可以参考这篇文章,这里只分享基本玩法。
开通账号
在开始先你需要先设置一条子域名,比如 lab.example.zz.ac,指向公益主机:
lab CNAME h1.lab.zz.ac.
然后还需要设置一条特殊的 TXT 记录来对外发布自己的 SSH 公钥,目前仅支持 ED25519 格式。
_sshpk.lab TXT "ssh-ed25519 AAAAC3N..."
注意这是在域名 _sshpk.lab.example.zz.ac 上配置 TXT 记录。
保存之后稍几分钟,然后使用 dig 命令验证域名解析:
dig +short A lab.example.zz.ac
dig +short TXT _sshpk.lab.example.ac如果返回的解析结果跟你设置的一样,则说明 DNS 配置没问题。
最后在域名管理页面最下面有 Advanced Features,点击展开,可以看到申请表单。填入子域名 lab 点击 Submit 提交。一切顺利的话你会看到如下输出:
== Querying SSH public key from TXT _sshpk.lab.example.zz.ac
== Checking type of ssh public key
== Checking A record for lab.example.zz.ac
== Checking AAAA record for lab.example.zz.ac
== Checking if account example exists
== Creating account example
== Enable login linter for example
✨ You can login via ssh example@lab.example.zz.ac now 🥂
这时候你就可以通过 ssh 登录自己的主机账号了。账号是你的主域名 example,主机名是刚才设置的子域名 lab.example.zz.ac。你可以运行 ssh example@lab.example.zz.ac 登录主机。
这里的子域名 lab 大家可以根据自己的需要指定,可以是 vps,可以是 api,等等。账号开通后还可以将多个不同的子域名指向该主机,接下来有更好玩的。
发布网站
如果你只想发布简单的网站试试水,可以直接使用 python3 实现。
登录之后创建单独文件夹:
mkdir web
cd web
echo hello > web/index.html然后运行 python 的 http 服务:
python3 -m http.server -b :: 8080✏️Note用户进程监听的端口号只能是 8080!
这个时候访问https://lab.example.zz.ac就会看到刚才创建的 index.html 网页内容。
不过这样程序无法在后台运行,服务器重启后网站就没法访问了。为此你需要设置 systemd unit 文件来自动运行相关进程。你可以创建~/.config/systemd/user/web.service文件:
[Unit]
Description=Web Service
[Service]
WorkingDirectory=%h/web
ExecStart=/usr/bin/python3 -m http.server -b :: 8080
[Install]
WantedBy=default.target
相关语法可以向 AI 讯问 systemd unit 文件。WorkingDirectory 是指定进程工作目录, ExecStart 指定要自动运行的命令。保存之后通过 systemdctl 开启自动运行:
systemctl --user enable --now web.service以上只是用 python 举个例子。如果你的网站使用 php, nodejs 或者 ruby 都没问题。但是你自己得搞清楚需要运行什么命令,然后自己写 unit 描述文件。
再举个 php 的例子。
mkdir web-php
cd web-php
cat << EOF > index.php
<?php
echo "hello";
EOF然后切换到 web-php 目录,执行命令php -S 0.0.0.0:8080。访问域名就会执行 index.php 输出 hello。systemd unit 描述文件留给大家练习。
如果你用的程序宿主机上没有,可以通过 nix 来安装。比如你可以通过如下命令安装 nodejs
nix profile add nixpkgs#nodejs --extra-experimental-features 'nix-command flakes'还可以使用 nix-env 命令
nix-env --install --attr nixpkgs.nodejs相关命令会软链接到~/.nix-profile/bin/目录。
更多相关内容请参考这篇文章 https://bosh.zz.ac/posts/3857780209.html
多域名建站
当前公益主机会把所有主域名下的子域名请求都转发给对应用户的8080端口。比如 example 用户运行程序监听 8080 端口,并且同时把 foo.example.zz.ac 和 bar.example.zz.ac 都解析到公益主机,那么访问 https://foo.example.zz.ac 和 https://bar.example.zz.ac 两个链接的请求都会转发给 example 用户下运行的程序。这个时候程序就得根据 HTTP 请求的 Host 字段做分流,来实现多域名建站了。
域名分流可以用 Nginx 或者 Caddy。建议用 Caddy,配置比 Nginx 要简单,而且宿主机上已经安装。
先创建 Caddy 配置文件:
http://foo.example.zz.ac:8080 {
reverse_proxy 127.0.0.1:8081
}
http://bar.example.zz.ac:8080 {
reverse_proxy 127.0.0.1:8082
}
然后配置 systemd unit 文件~/.config/systemd/user/caddy.service:
[Unit]
Description=My Caddy Service
[Service]
WorkingDirectory=%h/web
ExecStart=/usr/bin/caddy run -c Caddyfile
[Install]
WantedBy=default.target
最后启动 caddy 服务
systemctl --user enable --now caddy.service这样一来,HTTP 请求会先转发给你的 caddy 进程。然后 caddy 会根据域名分别转发给 8081 和 8082 两个端口。
加入社区
最后,大家可以加入 ZZ.NIC 的官方电报沟通群 https://t.me/zz_nic,分享自己的经验,交流遇到的问题。只要是对计算机或者网络技术感兴趣,愿意学习研究的朋友,我们都热烈欢迎。