臭名昭著aTrust隔离计划1.臭名昭著aTrust隔离计划2.VPN原理与aTrust隔离网络实践3.docker-easyconnect到底做了什么4.TUN(tunnel-隧道-虚拟网卡)模式
个人项目
personal(个人展示)GitHub Actions 自动部署个人展示项目
基于Quartz搭建的个人博客1.Quartz个人博客使用教程2.使用 rsync 增量部署 Quartz 博客3.使用 GitHub Actions 自动部署 Quartz 博客5.域名绑定6.CDN加速Obsidian、双向链接与知识图谱
旅行
行程攻略青岛三日游行程攻略
前端
NginxNginx配置与反向代理入门
Nodenpm与npx的区别
中华财险-公司项目
对外接口文档
基础数据码表对外接口(仅支持rpc调用)业务码表对外接口应用主数据对外接口
基础运营查询版本更新日志详情消息中心对外接口站内信对外接口站内信模板配置手册
权限中心权限中心对外接口文档(最新)权限中心对外接口文档前端ACL-CORE FACADE依赖版本
审计中心审计中心对外接口文档audit-center-facade版本
审批中心工作流迁审批流现状工作流迁审批流API能力替换方案老审批流接口文档审批中心接口文档审批中心业务回调FAQ
账号中心内部系统对接单点登录内部系统对接认证中心三方网页应用登录授权账号中心对外接口文档前端账号中心RPC接口文档账户变更对外广播消息文档账户中心对外接口HRMS外部员工变更广播消息文档HRMS外部员工对外接口
组织员工岗位🔥机构映射SDK接口文档员工岗位变更通知说明组织机构管营一体概念与用法组织员工对外广播消息文档组织员工岗位对外接口文档组织员工岗位对外接口文档前端组织员工岗位数据模型组织员工主数据业务场景案例organization-facade版本
hrms(大型人力资源外包管理系统)
项目架构说明HRMS Maven模块与依赖说明
项目说明0.流程中心模块0.组织模块说明1.业务线模块2.计划模块3.项目模块4.协议模块5.供应商模块6.合约域模块7.外包人员模块*核心:外包人员生命周期
项目运维外包人员项目编制差异排查与修复2.HRMS相关问题排查4.修改externalId(externalId和accountId不一致)
需求-系分
1.内部转外包0723外包人员关联历史内部账号系分新增外包人员关联历史账号内容(紧急0723上线)需求
2.工作岗位0820工作岗位0820需求工作岗位0820需求-系分
3.用工模式调整0917内部人员转外包用工系统需求2内部人员转外包用工系统需求-系分
sso(账号中心-单点登录)
项目架构说明aboss-sso项目架构入门AOP统一日志打印链路Maven多模块项目高级知识OAuth2.0
项目说明1.SSO-OAuth2.0与IDaaS登录流程2.外部账号创建流水号并发问题分析
AI
使用说明
第三方插件&技能简介Archify使用与安装指南Ponytail使用指南
CodexCodex CLI与IDE区别及使用指南Codex Hook单独配置与提交通知Codex MCP安装与使用指南Codex第三方插件安装与使用指南
Agent开发1.LLM、Token、上下文窗口与模型参数2.大模型 API、请求参数与响应结构3.Spring AI ChatClient4.Prompt、System Prompt、Prompt 模板6.结构化输出、JSON Schema7.SSE 流式响应8.会话 ID、聊天记录、Redis9.超时、重试、限流、降级10.完成可运行聊天接口
GitGit常用命令与Obsidian推送排查
Java
面试题Java基础与集合面试题
AtomicInteger原子计数与并发安全ConcurrentHashMap并发安全与计数Java线程、线程池与Future
python
基础Python基础语法
HTTPXHRMS员工详情接口调用(Python HTTPX)

一、💡 一句话理解

核心结论

域名是网站在互联网上的“地址”,IP 地址是服务器的“门牌号”,DNS 负责把域名翻译成 IP 地址,让用户输入域名后找到服务器上的 Quartz 博客。

相关笔记:6.CDN加速

二、🧭 理论:域名、IP 和服务器是什么

2.1 域名是什么

域名(Domain Name)是方便人记忆的网站地址,例如:

afyke.com
blog.afyke.com

直接记 IP 地址比较困难,而且服务器更换 IP 后,所有人都需要记住新的地址。域名把这件事隔离开了:用户记住域名,DNS 负责找到当前服务器。

可以把它理解为:

名词生活中的比喻实际作用
域名店铺名称方便用户记忆和访问
IP 地址店铺的具体地址定位网络中的服务器
DNS查地址的通讯录把域名转换成 IP 地址
服务器真正营业的店铺保存并返回网站内容

2.2 IP 地址是什么

IP 地址是网络设备的数字地址。公网服务器通常会有一个可以从互联网访问的公网 IP,例如:

47.99.178.186

上面的地址只是示例。配置自己的域名时,应填写服务器实际的公网 IP,不要直接照抄示例。

常见 IP 类型有:

类型说明
公网 IP互联网用户可以访问的服务器地址
内网 IP只在局域网或云平台内部使用的地址
IPv4例如 47.99.178.186,目前最常见
IPv6新一代 IP 地址,格式通常更长

域名必须解析到用户能够访问的公网地址。把域名解析到内网 IP,公网用户通常无法访问。

2.3 服务器是什么

服务器是一台长期联网的计算机。对于当前 Quartz 博客来说,它主要负责:

  1. 保存 Quartz 构建后生成的静态网页文件。
  2. 接收浏览器请求,并把网页文件返回给访问者。

当前博客的基本关系是:

部署流程:
Markdown 笔记

   Quartz 构建

生成 public 静态文件

上传到服务器网站目录

用户访问流程:

用户在浏览器输入域名

DNS 将域名解析为服务器公网 IP

浏览器通过 HTTP 或 HTTPS 请求服务器
(HTTP 通常使用 80 端口,HTTPS 通常使用 443 端口)

Web 服务器根据域名找到对应的网站目录

返回 public 目录中的静态文件

浏览器渲染并展示 Quartz 博客

相关笔记:

2.4 国外服务器购买地址

如果不想使用中国大陆服务器,可以直接从下面这些海外云服务器厂商购买一台 VPS(虚拟服务器)。它们都可以安装 Ubuntu、Nginx 或 Caddy,用来存放 Quartz 构建后的 public 静态文件。

服务商官方购买/开通地址适合人群说明
DigitalOcean Droplets购买 Droplet新手、个人博客控制台和文档比较直观,适合第一次购买海外 VPS。
Hetzner Cloud购买 Cloud Server想控制成本的人性价比较高,购买时可选择可用的数据中心地区。
Vultr Cloud Compute购买 Cloud Compute需要较多地区选择的人支持按小时或按月计费,具体地区和套餐以页面为准。
Akamai Cloud(原 Linode)购买云服务器想要稳定文档和成熟平台的人Linode 品牌已并入 Akamai,原有云服务器产品仍可使用。
Amazon Lightsail购买 Lightsail已经在使用 AWS 的人套餐式计费,和 AWS 其他服务衔接方便,但控制台相对复杂。
Oracle Cloud开通免费套餐想先免费试用的人提供 Always Free 资源,但有区域容量、账号验证和使用限制。

Quartz 博客的最低配置建议

个人博客一般不需要购买高配置服务器,优先选择下面的配置即可:

配置项建议
系统Ubuntu 22.04 LTS 或 Ubuntu 24.04 LTS
CPU1 vCPU 起步
内存1 GB 起步,建议 2 GB
硬盘25 GB SSD 起步
公网 IPv4必须有,用于配置域名 A 记录
数据中心选择距离主要访问用户较近的地区

个人博客优先推荐

如果只是部署当前 Quartz 博客,可以优先比较 Hetzner CloudDigitalOceanVultr。先购买最低配置即可,后续访问量增加后再升级,不需要一开始购买高配服务器。

购买时需要重点记录:

服务器厂商:<PROVIDER>
服务器地区:<REGION>
公网 IPv4:<SERVER_IP>
登录用户名:通常为 root 或 ubuntu
SSH 私钥:仅保存在自己的电脑,不要上传到笔记或聊天中

购买前注意

以上是海外厂商官方入口,价格、可用地区、付款方式、IPv4 费用和账号审核规则可能变化,最终以购买页面为准。购买服务器后还要完成系统初始化、防火墙配置、网站部署、域名解析和 HTTPS 配置;服务器本身不会自动绑定域名。

三、⚙️ 理论:DNS 是怎么工作的

DNS 的全称是 Domain Name System(域名系统)。它的作用是把人容易记住的域名转换成计算机使用的 IP 地址。

用户访问:

https://blog.afyke.com

浏览器大致经历以下过程:

浏览器请求 blog.afyke.com

查询 DNS 记录

得到服务器公网 IP

浏览器通过 HTTP 或 HTTPS 请求服务器
(HTTP 通常使用 80 端口,HTTPS 通常使用 443 端口)

服务器返回 Quartz 网页

如果用户访问的是 http://blog.afyke.com,服务器通常会先通过 HTTP 的 80 端口接收请求,再返回跳转响应,引导浏览器访问 https://blog.afyke.com。之后,浏览器会通过 HTTPS 的 443 端口重新请求网站内容。

DNS 解析记录中最常见的是:

记录类型作用常见用途
A把域名指向 IPv4 地址blog.afyke.com → 47.99.178.186
AAAA把域名指向 IPv6 地址域名 → IPv6 地址
CNAME把一个域名指向另一个域名www.afyke.com → afyke.com
TXT保存文本验证信息域名所有权验证等
MX指定邮件服务器接收域名邮箱邮件

最小配置

如果只是把一个域名绑定到一台 IPv4 服务器,通常只需要配置一条 A 记录

3.1 根域名和子域名

假设购买的域名是:

afyke.com

它可以拆成:

  • 根域名:afyke.com
  • 子域名:www.afyke.com
  • 博客子域名:blog.afyke.com

常见设计有两种:

afyke.com       → 博客首页
www.afyke.com   → 同一个博客

或者:

afyke.com       → 其他用途
blog.afyke.com  → Quartz 博客

如果只是搭建个人博客,使用根域名或 blog 子域名都可以。关键是提前确定对外使用哪个地址,并让 Quartz 的 baseUrl 与最终访问地址保持一致。

3.2 DNS 生效不是立即完成的

DNS 记录通常带有 TTL(缓存时间)。修改记录后,不同地区、不同网络的 DNS 缓存更新时间可能不同,因此可能出现:

  • 自己的电脑已经可以访问,别人的网络还不行。
  • 根域名已经生效,www 子域名还没有生效。
  • 浏览器仍然打开旧服务器。

这不一定代表配置错误。应先检查记录是否正确,再等待缓存逐步更新。

四、🚀 实践:从购买域名到绑定服务器

先看全流程

部署流程:修改 Markdown 笔记 → Quartz 构建 → 生成 public 静态文件 → 上传至服务器网站目录。

访问流程:用户输入域名 → DNS 解析到服务器公网 IP → Web 服务器根据域名找到网站目录 → 返回静态文件 → 浏览器渲染页面。

域名解析、服务器网站配置、HTTPS 和 Quartz 的 baseUrl 是部署前需要完成的配置;完成这些配置后,后续每次更新博客,通常只需要重新构建并部署 public 目录。

4.1 第一步:选择并注册域名

选择域名时,优先考虑:

  • 简短,方便输入和口头告知。
  • 拼写清楚,尽量避免连续多个连字符。
  • 与博客内容或个人品牌有关。
  • 确认自己拥有域名管理权限。
  • 记录注册商账号、续费时间和域名到期时间。

域名注册商、价格、实名或备案要求会因地区、后缀和政策变化,购买前应以注册商当前页面和所在地要求为准。

如果目标是“便宜、可靠、适合个人博客”,可以优先考虑以下平台。价格会受促销、汇率、税费和域名是否属于溢价域名影响,实际以购买页面为准。

  • Cloudflare Registrar.com 按注册局成本价收费,并提供隐私保护和 DNSSEC。使用 Cloudflare Registrar 注册的域名必须使用 Cloudflare DNS,不能改用其他 DNS 服务商。官方说明
  • Porkbun:价格较透明,并提供隐私保护。官方价格
  • Spaceship:适合比较看重价格的人。官方价格
  • 阿里云万网:如果服务器在中国大陆并准备办理 ICP 备案,国内支付、客服和备案流程衔接更方便。阿里云域名价格

太他妈恶心了,还要ICP备案,各种证件上传,甚至还提供600块每次的备案服务,尽量别使用中国的服务器

Cloudflare DNS 和其他 DNS 有什么区别

可以把这几个概念理解成:

名词通俗理解负责什么
域名注册商卖网站地址的地方注册和续费域名
DNS 服务商管理地址通讯录的地方把域名指向服务器 IP
服务器真正存放网站的地方保存并返回 Quartz 网页

例如:

afyke.com → 服务器公网 IP

这条记录既可以在 Cloudflare DNS 中配置,也可以在阿里云 DNS、腾讯云 DNS 等服务中配置。对于个人博客最常用的 A 记录来说,它们的基本作用是一样的。

它们的主要区别在于:

  • DNS 管理页面不同,操作方式不同。
  • DNS 服务商的网络、稳定性和解析速度可能不同。
  • Cloudflare 可以额外提供 CDN、缓存和基础安全防护。
  • 国内云厂商通常更方便地和国内服务器、备案及其他云服务配合。

费用方面,基础 DNS 解析通常可以免费使用;真正需要付费的一般是域名注册和续费。部分高级功能,例如更高规格的安全防护、服务保障或复杂的线路解析,可能需要单独付费。

如果域名是在 Cloudflare Registrar 注册的,就必须使用 Cloudflare DNS;如果域名是在其他注册商购买的,则可以根据需要选择 Cloudflare DNS 或其他 DNS 服务商。Cloudflare Registrar 的域名注册费用和 DNS 服务是两回事,使用 Cloudflare DNS 不代表网站必须部署在 Cloudflare 上。

如果服务器在中国大陆,正式通过域名提供网站服务通常还需要办理备案。工信部备案说明

4.2 第二步:确认服务器公网 IP

在服务器管理面板中找到公网 IPv4 地址,记为:

你的服务器公网 IPv4:<SERVER_IP>

不要把以下地址当作公网 IP:

127.0.0.1
localhost
192.168.x.x
10.x.x.x
172.16.x.x 到 172.31.x.x

这些通常是本机回环地址或内网地址,互联网用户无法通过它们访问你的服务器。

关键判断

能在服务器本机访问,不代表互联网用户能访问。域名解析必须指向用户可以到达的公网 IP。

4.3 第三步:添加 A 记录

这一步的目的,是告诉 DNS:

blog.afyke.com 应该去哪里找?
→ 去你的服务器公网 IP 找

不需要购买付费 DNS 实例

阿里云的免费 DNS 就可以添加 A 记录。页面上的“购买实例”是付费升级选项,个人 Quartz 博客暂时不用购买。

4.3.1 先找到服务器公网 IP

如果服务器是阿里云 ECS,可以进入:

阿里云控制台
→ 云服务器 ECS
→ 实例
→ 找到“公网 IPv4”

假设查到的公网 IPv4 是:

47.99.178.186

这里只是示例,实际操作时要填写你自己的公网 IPv4,不要直接照抄这个地址。

4.3.2 确认域名正在使用阿里云 DNS

在阿里云域名控制台的“域名列表”中,找到 afyke.com 这一行,直接点击右侧操作栏的蓝色 “解析”,不要寻找“DNS 设置”按钮。

进入解析页面后,再点击“解析设置”或“添加记录”,就可以配置 A 记录。

如果阿里云 DNS 页面提示“当前域名的 NS 地址与云解析系统分配的 NS 地址不一致”,说明域名目前还没有使用阿里云分配的 DNS。

阿里云会为域名分配 DNS 服务器地址,例如:

dns7.hichina.com
dns8.hichina.com

具体地址以页面实际显示为准,不要直接照抄上面的示例。只有域名当前使用的 DNS 服务商,添加的解析记录才会真正生效。

如果页面仍然提示 DNS 地址不一致,再进入域名管理相关页面修改 DNS 服务器,将它改为阿里云页面实际分配的地址:

域名列表
→ afyke.com
→ 右侧操作栏“管理”或 DNS 服务器设置
→ 修改 DNS 服务器

修改后保存并等待生效。

如果你打算使用其他 DNS 服务商,就不要修改这里,而是到实际正在使用的 DNS 服务商那里添加 A 记录。只有域名当前使用的 DNS 服务商,添加的记录才会真正生效。

截图中的“未实名”

截图显示 afyke.com 的状态是“未实名”。这表示域名实名认证还没有完成,需要先在“信息模板”中完成实名认证;否则后续可能无法正常续费,域名也可能被暂停解析。实名认证和 DNS 解析是两件不同的事情,但建议先完成实名认证。

4.3.3 添加 blog.afyke.com 的 A 记录

进入:

云解析 DNS
→ 公网权威解析
→ afyke.com
→ 解析设置
→ 添加记录

填写下面这些内容:

主机记录记录类型记录值
blogA你的服务器公网 IPv4

完整填写示例:

字段填写内容
记录类型A
主机记录blog
解析请求来源默认
记录值你的服务器公网 IPv4
TTL默认,通常为 10 分钟

这里的 blog 表示子域名前缀,完整域名就是 blog.afyke.com

假设服务器公网 IPv4 是 47.99.178.186,最终效果就是:

blog.afyke.com → 47.99.178.186

填写完成后点击“确定”或“确认”。

4.3.4 可选:让根域名也能访问博客

如果还想让根域名 afyke.com 也访问同一个博客,再额外添加一条 A 记录:

主机记录记录类型记录值
@A47.99.178.186

这条记录表示:

afyke.com → 47.99.178.186

如果你只打算使用 blog.afyke.com,这一条可以暂时不添加。

4.4 第四步:验证 DNS 解析

在本机终端执行:

dig +short blog.afyke.com

如果还配置了根域名,再检查:

dig +short afyke.com

期望结果是看到服务器实际公网 IP:

<SERVER_IP>

也可以使用:

nslookup blog.afyke.com

如果结果为空或还是旧 IP,先检查记录名称、记录类型和记录值,再考虑 DNS 缓存尚未更新。

验证通过的标志

dig +short blog.afyke.com 能返回服务器实际公网 IP,说明 DNS 这一层已经基本打通;这还不代表网站绑定和 HTTPS 已经完成。

4.5 第五步:在服务器上配置网站域名

DNS 只负责“找到服务器”,服务器还需要知道这个域名应该交给哪一个网站目录处理。

以当前 Quartz 博客为例,服务器需要将域名绑定到存放构建结果的目录:

/www/AfykeBlog/afyke-blog

如果使用宝塔、Nginx 或 Caddy 等工具,需要在网站配置中填写:

  • 网站域名:blog.afyke.com
  • 网站根目录:/www/AfykeBlog/afyke-blog

核心关系是:

域名 → 服务器公网 IP → 网站配置 → Quartz 静态文件目录

4.5.1 多个域名可以共用一台服务器吗

可以。多个域名可以解析到同一个服务器 IP,例如:

afyke.com       → 47.99.178.186
blog.afyke.com  → 47.99.178.186

这表示两个地址都能找到同一台服务器,但不代表它们会自动对应两个不同的网站。

服务器上的 Nginx、Caddy 或宝塔需要根据用户访问的域名,决定返回哪个网站:

blog.afyke.com
→ /www/AfykeBlog/afyke-blog
 
other.com
→ /www/OtherSite

如果服务器没有配置域名和网站目录的对应关系,多个域名可能都会打开同一个默认网站。

需要注意,afyke.com 是根域名,blog.afyke.com 是它的子域名;如果是两个完全不同的域名,配置方式也是一样的。

4.5.2 端口 100 应该怎么处理

DNS 记录中只能填写 IP,不能填写端口:

正确:47.99.178.186
错误:47.99.178.186:100

如果网站程序目前运行在服务器的 100 端口,直接访问时需要写端口:

http://blog.afyke.com:100

如果希望用户直接访问下面这种地址:

https://blog.afyke.com

就需要让 Nginx 或 Caddy 监听标准的 80/443 端口,再把请求转发到内部的 100 端口。对于 Quartz 静态网站,也可以让 Nginx 或 Caddy 直接读取网站根目录,这样通常不需要单独使用 100 端口。

4.6 第六步:配置 HTTPS

HTTPS 是加密后的 HTTP。配置完成后,用户通过下面的地址访问:

https://blog.afyke.com

服务器通常需要为域名申请 TLS 证书。证书申请前,域名一般需要已经解析到正确的服务器,并且服务器能够接收相关验证请求。

配置 HTTPS 后应检查:

  • http://blog.afyke.com 是否能跳转到 HTTPS。
  • 浏览器地址栏是否显示安全连接。
  • 页面中的图片、脚本和样式是否仍然使用 HTTP 地址。
  • www 和根域名是否按照预期跳转或统一。

不要把“DNS 已经解析成功”误认为“HTTPS 已经配置完成”。DNS、网站绑定和证书是三个不同步骤。

4.7 第七步:修改 Quartz 的 baseUrl

Quartz 需要知道博客最终对外使用的域名。应在 Quartz 配置文件中将 baseUrl 设置为实际域名,例如:

baseUrl: blog.afyke.com

通常不要在 baseUrl 末尾增加 /,也不要把完整的 https:// 重复写入,具体格式以当前 Quartz 配置文件和版本说明为准。

修改后重新构建博客:

npx quartz build

然后按照现有部署方式,把新的 public 目录同步到服务器:

部署流程:
Markdown 笔记

Quartz build

生成 public

rsync 或 GitHub Actions 部署

部署完成后的访问流程:

用户输入博客域名

DNS 解析到服务器公网 IP

Web 服务器将请求转发到博客网站目录

返回 public 中的静态文件

浏览器展示博客页面

五、🔍 最小例子:把 blog.afyke.com 指向 Quartz 博客

假设当前条件如下:

根域名:afyke.com
博客域名:blog.afyke.com
服务器公网 IPv4:<SERVER_IP>
服务器网站目录:/www/AfykeBlog/afyke-blog
博客访问地址:https://blog.afyke.com

5.1 DNS 配置

添加:

主机记录:blog
记录类型:A
记录值:<SERVER_IP>

5.2 服务器网站配置

将网站域名配置为:

blog.afyke.com

将网站根目录配置为:

/www/AfykeBlog/afyke-blog

然后申请并启用 HTTPS 证书。

5.3 Quartz 配置

baseUrl 设置为:

baseUrl: blog.afyke.com

重新构建并部署:

npx quartz build

最后验证:

dig +short blog.afyke.com
curl -I https://blog.afyke.com

如果 dig 返回正确 IP,curl 返回正常的 HTTP 响应,并且浏览器可以打开博客,说明从域名到 Quartz 网站的链路基本打通。

六、⚠️ 边界与常见误区

购买域名不会自动得到服务器。域名只是地址,仍然需要服务器或静态托管平台保存并提供网站文件。

DNS 只能把域名指向 IP。服务器还需要配置网站域名、网站根目录和 Web 服务,否则即使解析正确,也可能看到默认页面或连接失败。

A 记录的值应该是 IP 地址:

正确:47.99.178.186
错误:https://afyke.com
错误:afyke.com

如果要把一个域名指向另一个域名,应考虑 CNAME,而不是把域名文本填进 A 记录。

网站通常至少需要允许外部访问 HTTP 和 HTTPS 端口。若 DNS 正确但浏览器仍然连接超时,应检查:

  • 云服务器安全组。
  • 服务器防火墙。
  • Nginx、Caddy 或宝塔网站是否正常运行。
  • HTTP/HTTPS 端口是否监听。

如果服务器公网 IP 会变化,域名会再次指向旧地址。生产环境应使用稳定的公网 IP,或配置可靠的动态 DNS 方案。

解析成功只说明“域名找到了服务器”,不代表 HTTPS 证书已经正确。证书失效、域名不匹配或混合内容都可能导致浏览器警告。

afyke.comblog.afyke.com 是两个不同的域名。当前博客使用 blog.afyke.com 作为主地址;如果以后还想让根域名访问博客,需要另外配置根域名的 DNS 记录和网站绑定,并决定是否跳转到博客主地址。

七、📌 总结

弄一个域名并让用户访问 Quartz 博客,本质上包含两条链路。

部署流程:

Markdown 笔记
  ↓ Quartz 构建
public 静态文件
  ↓ 上传
服务器网站目录

访问流程:

用户输入域名
  ↓ DNS 解析
服务器公网 IP
  ↓ Web 服务器匹配域名
网站根目录中的 public 静态文件
  ↓ 返回文件
浏览器渲染 Quartz 博客

最小记忆方法:

  1. 注册一个域名。
  2. 用 A 记录把域名指向服务器公网 IP。
  3. 在服务器上把域名绑定到 Quartz 的网站目录。
  4. 配置 HTTPS。
  5. 将 Quartz 的 baseUrl 改成域名,重新构建并部署。

一句话总结

域名负责让人找到网站,DNS 负责指路,服务器负责提供网页,Quartz 负责生成网页。