# 核心记录类型

DNS 管理界面:“主机记录”(Host/Name)、“记录类型”(Type)、“记录值”(Value/Points to)、“TTL”

记录类型 主机记录 (Host) 记录值 (Value) 用途
A www , @ , blog 一个 IPv4 地址 (如 1.2.3.4 ) 指向服务器 IP:将域名指向你的网站或服务器
AAAA www , @ , ipv6 一个 IPv6 地址 指向 IPv6 地址:功能同 A 记录,用于支持 IPv6 的服务器
CNAME www , mail 另一个域名 (如 pages.github.io ) 设置别名:将一个域名指向另一个域名
MX @ 10 mx1.example.com. 设置邮箱服务器10 是优先级(数字越小越高)。可设置多条,实现主备邮箱服务器
TXT @ , _dmarc 文本字符串 验证与策略:常用于 SPF(防邮件伪造)、DKIM(邮件签名)、DMARC 和域名所有权验证
NS blog ns1.otherprovider.com. 委派子域名:将子域名的解析管理权交给其他 DNS 服务商。常用于部门或服务独立管理其域名
SRV _minecraft._tcp.play 10 5 25565 server.example.com. 指定服务端口:为特定服务(如 Minecraft、SIP)指定服务器和端口。格式为 优先级 权重 端口 目标
CAA @ 0 issue "letsencrypt.org" 限制证书颁发机构:为提高安全,只允许指定的 CA 为你的域名颁发 SSL 证书
PTR 1.1.168.192.in-addr.arpa mail.example.com. 反向解析 (IP -> 域名):主要用于邮件服务器反向检查
ALIAS / ANAME @ some-service.provider.com 根域名别名 (非标):类似 CNAME 但可用于根域名。这是 DNS 服务商提供的特殊功能(如 Cloudflare 的 CNAME Flattening),用于将根域名指向另一个域名

注意:

  1. @ 代表根域名(如 example.com
  2. 根域名 ( @ ) 通常不能设置 CNAME 记录
  3. PTR 通常在你的 IP 提供商(云服务商 / IDC)处配置,而非域名 DNS 服务商处

# 域名与服务器

# 部署网站

假设服务器 IP 是 100.107.102.101 ,域名是 mydomain.com

例:让 mydomain.comwww.mydomain.com 都能访问网站

  1. 设置根域名:添加 A 记录

    • 主机记录: @
    • 记录类型: A
    • 记录值: 100.107.102.101
  2. 设置 www 子域名:添加 CNAME 记录,将其指向根域名

    • 主机记录: www
    • 记录类型: CNAME
    • 记录值: mydomain.com

    未来更换服务器 IP 时,只需修改 A 记录, www 会自动跟随变化

# 反向代理:端口映射

标准的 DNS 记录(A 记录)只能将域名指向 IP 地址,不能直接指定端口。
想让域名映射端口,最正确的做法是配置一个 Web 服务器(Nginx 或 Apache)

例:将域名( service.mydomain.com )指向服务器 8080 端口

  1. DNS 设置:添加 A 记录,将域名指向服务器 IP 地址
    • 主机记录: service
    • 记录类型: A
    • 记录值: 你的服务器IP
  2. 服务器配置(以 Nginx 为例)
    • 当收到访问 service.mydomain.com 的请求时,Nginx 会把这个请求转发到你服务器上运行在特定端口(比如 8080)的那个应用
    • Nginx 监听标准的 80/443 端口

简单的 Nginx 配置:

server {
    listen 80;
    server_name service.mydomain.com;

    location / {
        # 将所有请求转发到本机的 8080 端口
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

当用户通过浏览器访问时,会默认使用 80 (HTTP) 或 443 (HTTPS) 端口

# 反向代理:代理镜像

用户通过访问 Nginx 服务器来访问目标网站,而目标网站的内容会被代理到指定的域名下

DNS 配置同上同理

# 配置示例

以下是一个 Nginx 的配置示例,将请求转发到不同的后端服务:

server {
    listen 80;
    server_name your-domain.com;  # 你的域名
  
    location / {
        # 目标网站地址
        proxy_pass https://target-website.com;
      
        # 设置代理头信息
        proxy_set_header Host target-website.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header User-Agent $http_user_agent;
        proxy_set_header Accept-Encoding "";
      
        # 禁用缓存以便实时镜像
        proxy_buffering off;
      
        # 超时设置
        proxy_connect_timeout 30s;
        proxy_read_timeout 30s;
    }
}

# DNS 高级配置

# NS 记录 - 委派子域名管理权

例:将 blog.mydomain.com 这个子域名交给另一个解析平台或服务来管理(例如 CloudDns 双向解析至 CloudFlare)

  • 操作:在 mydomain.com 的 DNS 设置中,添加 NS 记录
    • 主机记录: blog
    • 记录类型: NS
    • 记录值: ns1.otherprovider.com (对方提供的 DNS 服务器地址)
    • 通常需要添加至少两条 NS 记录

  • 效果:之后所有 blog.mydomain.com 及其下级域名(如 posts.blog.mydomain.com )的解析请求,都会被导向 ns1.otherprovider.com 去处理

根域名同理,将主机记录替换为 @ 即可

# SRV 记录 - 指定服务端口

例:配置 Minecraft 服务器或其他需要指定端口的服务

  • 格式_服务._协议.主机记录
  • 示例:为 play.mydomain.com 配置 Minecraft 服务
    • 主机记录: _minecraft._tcp.play
    • 记录类型: SRV
    • 记录值 / 数据: 10 5 25565 server.mydomain.com. (优先级 权重 端口 目标主机)
  • 解释:客户端连接 play.mydomain.com 时,会自动查找此 SRV 记录,并连接到 server.mydomain.com25565 端口

SRV 记录可以指定服务的端口,但是绝大多数 Web 浏览器不支持通过 SRV 记录来访问网站
SRV 记录主要用于特定协议的客户端自动发现服务,例如 Minecraft 游戏、VoIP 电话 (SIP)、邮件或即时通讯 (XMPP) 等,不适用于通用的 Web 访问
对于网站或 Web 应用,更多的是使用反向代理

# CAA 记录 - 限制 SSL 证书颁发机构

例:为提高安全性,只允许 Let's Encrypt 为你的域名颁发证书

  • 操作:添加 CAA 记录
    • 主机记录: @
    • 记录类型: CAA
    • 记录值 / 数据: 0 issue "letsencrypt.org"
  • 效果:其他 CA(证书颁发机构)在检查时会看到此记录,并拒绝为你的域名颁发证书