3. 域名与DNS配置:从购买到CDN加速
域名和DNS,说白了就是用户访问你服务的“门牌号”和“导航系统”。很多新手觉得这步简单,随便配配就行。但我见过太多线上事故,都是因为DNS配置不当导致的。今天我把这块的坑和经验都摊开讲。
3.1 域名购买:第一道选择题
选域名注册商,我个人习惯看三点:价格、稳定性、解析速度。别贪便宜去小平台买,我有个朋友在某不知名平台买了域名,结果要转出时被卡了半个月,业务直接停摆。
3.2 DNS解析原理:到底发生了什么?
用户输入域名,浏览器怎么找到你的服务器?这个过程叫DNS解析。我画了张图,你看完就明白了。
流程其实不复杂:浏览器先查本地缓存,没命中就去问根DNS,根DNS告诉它找谁,一路递归下去,最后拿到IP。嗯,这里要注意——DNS解析是有缓存的,TTL(生存时间)决定了缓存多久。
核心概念:
- 递归查询: 客户端只发一次请求,DNS服务器帮你跑完整个链路
- 迭代查询: 客户端自己逐级去问,每次只得到一个“下一级”的指引
- TTL: 缓存时间,单位秒。生产环境建议 60-600 秒,别设太长
3.3 A记录与CNAME:两种核心记录类型
配置DNS时,最常用的是A记录和CNAME。我刚开始也搞混过,后来总结了一句话:A记录指向IP,CNAME指向域名。
| 记录类型 | 作用 | 示例 | 适用场景 |
|---|---|---|---|
| A记录 | 域名 → IPv4地址 | api.example.com → 123.123.123.123 | 服务器IP固定时 |
| AAAA记录 | 域名 → IPv6地址 | api.example.com → 2001:db8::1 | 支持IPv6的服务器 |
| CNAME | 域名 → 另一个域名 | www.example.com → example.com | CDN、负载均衡、多域名指向同一服务 |
| MX记录 | 域名 → 邮件服务器 | example.com → mail.example.com | 企业邮箱配置 |
避坑指南: 我曾经犯过一个低级错误——把根域名(example.com)配成了CNAME。但根域名必须用A记录,因为CNAME不能和MX、NS等其他记录共存。结果邮件全收不到,排查了一下午才发现。
规则很简单:根域名用A记录,子域名可以用CNAME。
3.4 CDN加速基础:让用户离你更近
CDN(内容分发网络)说白了就是把你的静态资源(图片、CSS、JS)缓存到全球各地的节点上。用户访问时,从最近的节点拿数据,速度自然快。
我参与过一个电商项目,没上CDN前,海外用户加载首页要8秒。上了CDN后,直接降到1.2秒。你想想看,这体验差距有多大。
CDN的核心原理
CDN配置步骤
- 选择CDN服务商: 阿里云CDN、腾讯云CDN、Cloudflare、Akamai 等。国内业务选国内厂商,海外业务选Cloudflare或Akamai。
- 添加加速域名: 在CDN控制台添加你的域名,比如 static.example.com。
- 配置CNAME: 把加速域名指向CDN提供的CNAME地址。这一步很多人会忘,我提醒一下——配完CNAME后,原域名的A记录要删掉,否则解析会冲突。
- 设置缓存规则: 静态资源(图片、CSS、JS)缓存时间长一点,动态API不要缓存。
- HTTPS配置: 上传SSL证书,开启强制HTTPS跳转。
我的经验: 配置CDN后,一定要测试回源是否正常。我曾经遇到过CDN节点缓存了旧版本文件,用户死活刷不出新页面。后来我养成了一个习惯——每次发布前,先在CDN控制台手动刷新缓存。
3.5 常见避坑清单
这部分是我这些年踩过的坑,列出来给你参考:
| 问题 | 现象 | 解决方案 |
|---|---|---|
| TTL设置过长 | 域名切换IP后,用户长时间无法访问新服务器 | 切换前将TTL改为60秒,切换后24小时再改回 |
| CNAME与MX冲突 | 邮件发送失败 | 根域名用A记录,子域名用CNAME |
| CDN缓存未刷新 | 用户看到旧版本页面 | 发布后手动刷新CDN缓存,或设置版本号参数 |
| DNS解析超时 | 页面加载慢,部分用户无法访问 | 配置多个DNS服务器,开启DNS预解析 |
| HTTPS证书未配置 | 浏览器提示不安全 | 使用Let's Encrypt免费证书,或云厂商提供的证书 |
最后提醒一句: DNS配置生效不是即时的。全球DNS缓存刷新需要时间,最长可能48小时。所以做域名迁移或IP切换时,一定要留出缓冲期。我见过有人半夜切DNS,结果第二天早上业务全挂——因为缓存还没刷新。