网站部署到阿里云之后,很多人会在“绑定域名”这一步卡住。服务器明明已经跑起来了,浏览器输入域名却打不开,或者弹出备案相关的提示,折腾半天才发现是某个环节漏掉了。下面按实际操作顺序讲一遍,中间穿插两个常见的坑。

绑定前先确认三件事
动手之前,先看三样东西:域名是否已经注册并处于可用状态,云服务器(ECS)是否开通并且能通过公网IP访问,还有域名和服务器是否在同一个阿里云账号下。如果不在同一个账号,至少要确保你有权限修改解析记录,否则后面的步骤没法做。
域名如果是在阿里云万网注册的,直接在控制台就能找到。要是在其他服务商买的,需要先去原服务商那里把DNS服务器改成阿里云提供的地址。不改的话,你在阿里云里添加的解析记录不会生效,这一点很容易被忽略。
大陆服务器必须先备案
备案是新手最容易漏的一步。服务器位于中国大陆地域,又要用域名对外提供服务,就必须完成ICP备案。没备案的域名一访问,阿里云会直接拦截请求,页面显示的是备案提示,而不是你的网站内容。
备案大致分四步:在阿里云备案系统里提交主体信息,完成身份核验(个人通常要做人脸识别,企业需要提供营业执照),填写网站信息并上传材料,最后等待管局审核。审核一般在几个工作日到二十个工作日之间,快慢主要看主体类型,以及材料是否一次就通过了规范检查。
有个开发者的经历可以参考。他最初把博客域名直接解析到了香港地域的服务器,香港节点不需要备案,网站能正常访问。后来想把服务迁回北京,才发现域名在大陆节点用不了,只能重新走备案,前后耽误了两周。所以服务器地域最好在项目初期就定下来,它直接决定要不要备案。
在云解析里添加记录
备案通过之后,或者你用的本来就是海外地域的服务器,就可以配置解析了。进入阿里云云解析DNS控制台,找到对应域名,点击“添加记录”。
最常用的是A记录和CNAME记录。A记录把域名直接指向服务器公网IP,单机部署基本都用它。CNAME则是把域名指向另一个域名,常见于接入CDN、负载均衡或对象存储。如果只有一台服务器,没必要为了看起来专业去用CNAME,多绕一层只会增加排查成本。
一个基础配置大致是这样:
- 记录类型:A
- 主机记录:www,对应 www.example.com
- 记录值:服务器公网IP,例如 203.0.113.10
- TTL:600秒,改动后大约十分钟内生效,调试阶段比较方便
裸域名 example.com 也要单独添加一条主机记录为 @ 的A记录,指向同一个IP。很多人只配了www,访问裸域名时就一直打不开,然后开始怀疑是服务器的问题。
服务器端也要认这个域名
解析生效只说明域名能找到你的服务器,服务器还得知道该响应哪个域名。以Nginx为例,需要在配置里写清楚server_name:
server {
listen 80;
server_name www.example.com example.com;
root /var/www/html;
index index.html;
}
改完先执行 nginx -t 检查语法,确认没问题后再执行 nginx -s reload 重新加载。另外,如果安全组没有放行80和443端口,外部访问同样会失败,而且这个问题经常被忽略。
再说一个上线当天的案例。一个小型电商团队发现域名能解析,页面却一直显示Nginx默认欢迎页。排查后发现,新站点确实部署了,但Nginx的server_name还是默认值,请求落到了别的虚拟主机上。改好server_name并重载配置后就恢复了。这类问题的特点是解析没有错,出在服务端的匹配规则上,所以先去查解析往往会绕很多弯路。
配置HTTPS证书
现在的网站基本都应该启用HTTPS。阿里云提供免费SSL证书的申请入口,在SSL证书控制台可以申请单域名或通配符证书。审核通过后,下载对应服务器类型的证书文件,上传到服务器,再在Nginx里完成配置。
证书签发的域名必须和用户实际访问的地址一致。如果证书只签给了www.example.com,用户输入example.com时,浏览器就会提示证书不受信任。所以申请时,建议把裸域名和www域名一起加进去。
验证与排查
配置完成后可以从几个方面验证。在本地执行 ping www.example.com,看解析结果是不是你设置的IP;用 nslookup 或在线DNS检测工具查看各地解析是否同步;再用浏览器分别打开带www和不带www的地址,确认两个都能正常访问。
如果解析结果不对,先回到控制台确认记录保存成功,再清一下本地DNS缓存。如果解析没问题但访问失败,就按顺序检查安全组、服务器防火墙、Nginx配置和应用进程。一层一层排,一般不会花太长时间。
小结
阿里云绑定域名的流程其实不复杂:先确认备案和地域的关系,再配置解析,然后让服务器正确响应这个域名,最后启用HTTPS。真正容易翻车的,通常是备案被忽略、只配了www没配裸域名,以及server_name和域名对不上。这三处提前检查,绑定过程会顺利很多。