给网站配置域名时,最容易乱的地方不是某一个按钮在哪里,而是几个概念混在一起:域名、DNS、服务器公网 IP、HTTPS 证书、Nginx 或 Apache。
更清晰的顺序是:
- 先确认是否需要备案
- 再配置 DNS 解析
- 等解析生效后申请 SSL 证书
- 把证书部署到实际提供网站的服务上
- 最后检查安全组、端口和浏览器访问结果
先确认是否需要备案
如果网站服务器在中国大陆地域,比如北京、上海、杭州、深圳,一般需要先做 ICP 备案。否则即使域名解析到了服务器,网站也可能无法正常访问。
如果服务器在香港、新加坡、美国等非中国大陆地域,通常不需要备案。
所以第一步不是急着加 DNS,而是先看网站到底跑在哪个地域。
配置 DNS 解析
如果域名和服务器都在阿里云,常见入口是:
阿里云控制台 -> 云解析 DNS -> 域名解析 -> 找到你的域名 -> 解析设置 -> 添加记录如果网站部署在 ECS 上,通常添加两条 A 记录,把域名指向 ECS 的公网 IP:
记录类型:A
主机记录:@
记录值:你的 ECS 公网 IP
用途:访问 example.com记录类型:A
主机记录:www
记录值:你的 ECS 公网 IP
用途:访问 www.example.com如果绑定的是 OSS、CDN、SLB 或其他平台服务,通常使用 CNAME:
记录类型:CNAME
主机记录:www
记录值:平台给你的 CNAME 地址需要注意的是,同一个主机记录不要同时配置冲突记录。比如 www 已经有 A 记录,就不要再给 www 加 CNAME。要换方案时,先删除或暂停旧记录。
等解析生效
DNS 不是点完就一定马上全球生效,通常需要几分钟到几十分钟。
本地可以用这些命令检查:
ping example.com或者:
nslookup example.com
nslookup www.example.com看到返回的是 ECS 公网 IP,或者平台提供的 CNAME 地址,说明解析基本正常。
申请 SSL 证书
如果要支持 HTTPS,就要申请证书。阿里云里常见入口是:
阿里云控制台 -> 数字证书管理服务 / SSL 证书 -> SSL 证书管理申请时要填域名。比如你希望这两个地址都支持 HTTPS:
example.com
www.example.com那证书里就要覆盖这两个域名。只申请 example.com,通常不会自动覆盖 www.example.com。
也可以申请通配符证书:
*.example.com不过通配符通常不覆盖根域名 example.com,根域名可能还要单独加。
域名验证一般有三种方式:
- 自动 DNS 验证:域名和云解析 DNS 在同一个阿里云账号下时比较省事
- 手动 DNS 验证:按系统给出的 TXT 或 CNAME 记录去 DNS 里添加
- 文件验证:把指定文件放到网站指定路径
证书签发后,再进入部署环节。
ECS + Nginx 的部署方式
如果网站跑在 ECS 上,并且前面用 Nginx 做反向代理,通常下载 Nginx 类型证书,会拿到两个文件:
example.com.pem
example.com.key可以上传到服务器,例如:
/etc/nginx/cert/example.com.pem
/etc/nginx/cert/example.com.keyNginx 配置可以像这样:
server {
listen 80;
server_name example.com www.example.com;return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/nginx/cert/example.com.pem;
ssl_certificate_key /etc/nginx/cert/example.com.key;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
如果网站是静态目录,不是反向代理,可以把 location 改成:
location / {
root /var/www/html;
index index.html index.htm;
}改完以后先检查配置,再重载:
nginx -t
systemctl reload nginxOSS、CDN 和 Apache 的差异
如果网站在 OSS 上,路径一般是:
OSS Bucket -> 传输管理 / 域名管理 -> 绑定自定义域名 -> 配置 HTTPS 证书通常要先给域名添加 CNAME,指向 OSS 提供的域名,然后在 OSS 域名管理里选择或上传证书,最后开启 HTTPS。
如果前面有 CDN,路径一般是:
CDN 控制台 -> 域名管理 -> 目标加速域名 -> HTTPS 配置CDN 场景下,证书配置在 CDN 上,用户到 CDN 节点这一段会变成 HTTPS。
如果用 Apache,思路和 Nginx 类似,只是证书要配置到 Apache 的 SSL 配置里,改完后重启 Apache。
别忘了安全组端口
ECS 上即使 Nginx 配好了,如果安全组没放行,外部也访问不到。
至少要检查入方向规则:
TCP 80 0.0.0.0/0
TCP 443 0.0.0.0/0入口通常是:
ECS 控制台 -> 实例 -> 安全组 -> 入方向规则如果只是测试 HTTP,可以先看 80;上 HTTPS 后一定要放行 443。
最后用浏览器验证
完整链路其实是这样的:
用户访问 www.example.com
DNS 查询这个域名对应哪个 IP
返回 ECS 的公网 IP
浏览器访问 ECS
Nginx 或其他 Web 服务返回网站页面换成生活化一点的比喻:
域名 = 店名
DNS = 地图导航 / 通讯录
ECS = 真实店铺地址
证书 = HTTPS 身份证明
Nginx = 店门口的接待和转发所以配置网站时,我会按这个顺序检查:
- 域名是否备案完成
- DNS 是否指向正确 IP 或 CNAME
- 证书是否覆盖根域名和 www
- Nginx 或平台服务是否部署了证书
- 安全组是否放行 80 和 443
- 浏览器访问是否显示 HTTPS 正常
按这个顺序排查,比在控制台里到处乱点要稳很多。