域名、DNS、HTTPS——你的网站怎么被找到
上一篇文章讲完了部署,网站文件已经放在了服务器上。但你发现一个问题:别人怎么访问?
你可以把服务器的 IP 地址发给对方,但这串数字谁也记不住。而且没有 HTTPS 的时候,浏览器地址栏会显示「不安全」。这篇文章用白物集的实际域名架构讲清楚三件事:域名是什么、DNS 怎么把人带到你的服务器、HTTPS 为什么必不可少。
域名
IP 地址是一串数字(比如 203.0.113.1),域名是它的别名。你在浏览器输入 baiwuji.top,背后发生的是 DNS 查询——把域名解析成 IP,再建立连接。
白物集目前用了两个域名:
baiwuji.top— 主站,用户访问的页面ai.golfr20.cn— API 服务,所有数据请求走这里
为什么分开?前端的 Astro SSR 页面和后台的 Express API 是两套独立部署的服务,域名分离可以独立扩展、独立做缓存策略。而且当主站需要从 Astro 迁移到其他框架时,API 域名完全不受影响。
DNS 解析链
你在阿里云或 Cloudflare 买了一个域名,然后在 DNS 管理面板添加一条记录,告诉全世界「这个域名对应哪台服务器」。最常见的记录类型:
- A 记录 — 域名直接指向一个 IPv4 地址
- CNAME 记录 — 域名指向另一个域名(用于 CDN 或负载均衡)
- TXT 记录 — 存放文本信息,常用于验证域名所有权
白物集的 DNS 配置用了 Cloudflare 的权威 DNS。架构文档中的流量路径是这样描述的:
用户浏览器 → Cloudflare Tunnel → nginx → Express API / Astro SSR
Cloudflare Tunnel 是一种特殊的连接方式:服务器主动向外连到 Cloudflare 的边缘网络,而不是让 Cloudflare 直接连到服务器。这样做的好处是服务器不需要开放公网端口,攻击者少了一个入口。
nginx 反向代理
流量到服务器之后,nginx 是第一站。它根据请求路径决定转发给谁:
/ 根路径 → Astro SSR 页面
/api/* → Express API
/_astro/* 静态资源 → 一年缓存,直接返回文件
这是白物集架构中的核心设计——nginx 不是可有可无的,它承担了反向代理、HTTPS 卸载、静态资源缓存、请求路由四层职责。
HTTPS
HTTP 是明文传输,你的登录密码、文章内容在中间任何一个路由器上都能被看到。HTTPS 在 HTTP 外面包了一层 TLS 加密,保证传输内容只有你和服务器能看懂。
配置 HTTPS 需要三个东西:
- SSL/TLS 证书 — 证明这个域名确实属于你
- 证书签发机构(CA) — 颁发证书的第三方,浏览器信任它
- 证书续期 — 证书有时效(90 天到 1 年),到期手动更新很麻烦
白物集用 Cloudflare 的 Edge Certificate,证书管理完全自动化。Cloudflare 作为反向代理在边缘网络终止 TLS,服务器到 Cloudflare 之间走内部网络,不需要在 ECS 上单独管理证书文件。
如果不用 Cloudflare,自己申请证书用 Let's Encrypt 配合 certbot,配置 cron 任务每月自动续期:
# certbot 自动续期脚本(每月执行一次)
certbot renew --nginx --quiet
无论哪种方式,核心原则不变:证书管理必须自动化。手动续期的证书一定会过期,只是时间问题。
白物集的前端怎么用域名
文章详情页的分享功能用到了域名。在 [id].astro 中:
const shareUrl = encodeURIComponent(`https://baiwuji.top/articles/${id}`);
const rawShareUrl = `https://baiwuji.top/articles/${id}`;
分享到 QQ 和微信的链接都硬编码了主站域名 baiwuji.top。页面底部的结构化数据(JSON-LD)也写了同一个域名:
{
"@context": "https://schema.org",
"@type": "Article",
"author": [{ "name": "白物集", "url": "https://baiwuji.top" }],
"publisher": { "name": "白物集", "url": "https://baiwuji.top" }
}
这个 JSON-LD 是给搜索引擎爬虫看的,告诉 Google 这篇文章的作者和发布者是谁。域名写错或用了临时域名,搜索引擎会忽略你的结构化数据。
Sitemap 和 RSS
搜索引擎不知道你的网站上有哪些页面,除非你告诉它。Sitemap 和 RSS Feed 就是给爬虫看的目录。
白物集的 sitemap.xml 和 rss.xml 都是 Astro SSR 动态生成的,所有链接都是 https://baiwuji.top 开头。爬虫定期来读取 Sitemap,发现新页面就收录。
还有一个容易被忽略的文件是 urllist.txt,百度站长平台要求的纯文本格式 URL 列表。白物集的部署脚本中也会生成这个文件,确保百度能搜到最新的文章。
踩坑:域名缓存
DNS 记录变更后不会立即生效。每条 DNS 记录有一个 TTL(Time To Live),告诉全球的 DNS 缓存服务器「这条记录最多缓存多久」。
白物集早期做域名切换时踩过的坑:改完 DNS 记录后等了几个小时才生效,因为之前设置的 TTL 是 24 小时。后来改成了 300 秒,切换速度快了很多。
如果你在部署中改了 DNS,先确认 TTL 已经调到 60-300 秒,再发起变更。 生产环境的域名切换需要做 A/B 验证:新域名配置好了先用 curl 带 Host 头测试:
curl -H "Host: baiwuji.top" http://203.0.113.1/
如果返回了正确的页面内容,说明 nginx 配置对了,再改 DNS 记录指向新服务器。
总结
域名、DNS、HTTPS 这三件事在整个网站开发中看似不起眼,但没有它们,你的代码跑在服务器上也无人能访问。它们构成了互联网的寻址系统:域名是人能记住的名字,DNS 是把名字翻译成 IP 的导航,HTTPS 是在导航路径上加密通信的保险箱。
下一篇讲白物集完整架构复盘:从内容管线到 SSR 渲染,从小型脚本到自动化出版,把整个网站串起来从头过一遍。