Vibe Tutorial
域名解析原理与网络接入

12.3 域名结构

Tip

URL (Uniform Resource Locator) 是我们在浏览器地址栏里输入的那一串东西。它看起来很长,但结构非常严谨。


1. 为什么要学这个?

用户问:“这个 https 是什么意思?” “为什么有些网址有 www,有些没有?” “那个 :3000 是必须输的吗?”

如果你答不上来,你的专业度就打折了。你需要像解剖师一样,理解每一个字符背后的含义。


2. 核心概念:URL 的解剖学

一个标准的 URL 包含 5 个部分: https://www.google.com:443/search?q=hello

  1. Protocol (协议): https://。告诉浏览器用什么语言和服务器沟通。
  2. Subdomain (子域名): www
  3. Domain (主域名): google.com
  4. Port (端口): :443。通常省略 (HTTP默认80,HTTPS默认443)。
  5. Path (路径): /search。你要访问服务器的哪个文件或路由。
  6. Query (参数): ?q=hello。给服务器传的变量。

3. 解决方案 (HOW)

3.1 常用记录类型 (DNS Records)

在配置域名时,你会遇到以下名词:

  • A 记录 (Address): 域名 -> IP (IPv4)。
    • example.com -> 1.2.3.4
  • CNAME (Alias): 域名 -> 另一个域名 (别名)。
    • blog.example.com -> cname.vercel-dns.com (常用)
  • MX (Mail): 邮件服务,决定了谁来收这个域名的邮件。
  • TXT: 文本记录。常用于验证域名所有权 (Google/Vercel 验证)。

3.2 结构示意图

graph TD
    URL["完整 URL"] --> Proto["协议 (https)"]
    URL --> Host["主机名 (Host)"]
    URL --> Path["路径 (/api/users)"]
    
    Host --> Sub["子域名 (www)"]
    Host --> Root["主域名 (example.com)"]
    
    style Host fill:#e1bee7,stroke:#8e24aa
    style Proto fill:#c8e6c9,stroke:#2e7d32

4. 避坑指南

❌ 不要这样做 ✅ 应该这样做 为什么
只解析 www 同时也解析 @ 很多用户习惯直接输 example.com。如果你忘了解析根域名 (@),这部分用户就打不开网站。
根域名用 CNAME 根域名用 A 或 AAAA 标准协议规定根域名不能有 CNAME。虽然 Cloudflare 有 CNAME Flattening 黑科技,但为了稳妥,尽量遵循标准。
泛解析 (*) 明确指定子域名 开启 *.example.com 虽然方便,但容易被恶意利用,或者导致 SSL 证书配置复杂化。

5. 真实案例

Story

2018年,丢失的 Cookie

某开发者把登录 Cookie 设置在 app.example.com 下。用户访问 www.example.com 时发现没登录,投诉 Bug。 原因:Cookie 默认是有域名作用域的。子域名之间的 Cookie 默认不共享。

Vibe 心法:域名不仅是入口,也是浏览器的安全边界。深刻理解 URL 的每一层级及其背后的 DNS 记录类型,是为了在跨子域名共享状态(如 SSO 登录)时,能够精准控制 Cookie 的作用域。


6. 本章小结

  1. URL:是通往资源的地图。
  2. CNAME:是目前云服务(Vercel/AWS)最常用的接入方式。
  3. WWW:其实也是一个子域名,和 blogmail 地位一样,只是约定俗成的“大门”。