域名买了,VPS 也有了,浏览器却还是说"无法访问此网站"。缺的那一块几乎总是两条 DNS 记录,外加一个真正在正确地址上响应的 Web 服务器。下面是完整的流程,从域名注册商一直到能用的 HTTPS 小锁。
开始之前:你的套餐能接收网页流量吗?
访客会连接服务器的 80 和 443 端口,这需要一个有独立公网 IP 的套餐。NAT 套餐只转发你的专属 SSH 端口,所以没法在域名上托管网站——我们的文章独立 IP 还是 NAT 解释了两者的区别。小网站在 Nano-IP 上就跑得很好。
1. 找到服务器的地址
IPv4 和 IPv6 地址都在控制面板的服务器页面上。示例里我们用文档专用地址:
- IPv4:
203.0.113.10 - IPv6:
2001:db8::10
2. 创建 DNS 记录
登录管理域名 DNS 的地方(通常是域名注册商),添加:
| 类型 | 名称 | 值 | TTL |
|---|---|---|---|
| A | @ | 203.0.113.10 | 300 |
| AAAA | @ | 2001:db8::10 | 300 |
| CNAME | www | example.com. | 300 |
@ 表示主域名。300 秒这样的短 TTL 让改错的成本很低;一切正常后可以调到 3600。
如果暂时不想用 IPv6,先别加 AAAA 记录——原因见第 5 步的提醒。
3. 检查 DNS 是否生效
别轻信注册商的"已保存"提示,直接问 DNS:
dig +short example.com A
dig +short example.com AAAA
dig +short www.example.com
dig +short example.com A @1.1.1.1
最后一行问的是公共解析服务器,更接近访客看到的结果。如果返回的是你的 IP,DNS 就搞定了。
4. 让服务器响应
安装 nginx 并开放端口:
apt update && apt install -y nginx
ufw allow 80/tcp
ufw allow 443/tcp
打开 http://example.com——应该能看到 nginx 的欢迎页。现在用免费证书加上 HTTPS:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com
Certbot 会修改 nginx 配置、设置跳转到 HTTPS,并自动续期证书。如果 nginx 后面跑的是真正的应用,请按我们的带 HTTPS 的反向代理指南来做。
5. IPv6 的坑
很多人栽在这里。你加了 AAAA 记录,可 nginx 只监听 IPv4。走 IPv6 的访客(很多移动网络)会先尝试 IPv6 地址,然后失败。请确认 server 块里两行都有:
listen 80;
listen [::]:80;
Ubuntu 上 nginx 的默认配置已经带了 [::],但自定义配置经常漏掉。找一台有 IPv6 的机器测试:
curl -6 -I https://example.com
常见问题
- 还是显示旧 IP: 本地解析器缓存了它。等 TTL 过期,或者像上面那样问
@1.1.1.1。 - Certbot 超时失败: 80 端口被挡了,或者 DNS 还没指向这里。再检查一遍
ufw status和dig。 - 不带 www 能访问,带 www 不行: 证书或 server 块里没有包含
www。用两个名称重新运行 certbot。
关于反向 DNS
A 和 AAAA 记录是从名称到 IP。反向 DNS(PTR)方向相反,而且是在控制面板里设置,不在注册商那里。只有发邮件或某个服务要检查它时才需要——我们的 PTR 指南有详细说明。
评论
暂无评论。来做第一个吧。