如何解决AWS Route53裸域名无法指向EC2上Nginx服务器的问题?
问题描述
在Namecheap购买域名banuka.com,并在AWS Route53创建了公共托管区域,已将托管区域的Nameservers配置到Namecheap的DNS服务器中。在EC2实例搭建Nginx服务器后,创建了两条A记录:
banuka.com A <IP-OF-EC2> nginx.banuka.com A <IP-OF-EC2>
目前http://nginx.banuka.com可正常访问,但http://banuka.com无法访问,浏览器提示“This site can’t be reached”。执行dig banuka.com的结果如下:
➜ ~ dig banuka.com ; <<>> DiG 9.10.6 <<>> banuka.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32429 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;jananath.com. IN A ;; AUTHORITY SECTION: banuka.com. 454 IN SOA ns-920.awsdns-51.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400 ;; Query time: 41 msec ;; SERVER: 2a02:2457:30c:101::11#53(2a02:2457:30c:101::11) ;; WHEN: Tue Jun 27 15:31:54 CEST 2023 ;; MSG SIZE rcvd: 122
问题分析与解决方案
问题分析
从dig输出能看出两个关键信息:
- ANSWER段为空:DNS服务器未返回
banuka.com的A记录,仅返回SOA记录,说明根域名的A记录未被正确解析。 - QUERY段异常:查询请求里写的是
jananath.com而非banuka.com,大概率是执行dig时的输入失误,但核心问题还是根域名A记录未生效。
修复步骤
- 核对Route53根域名A记录配置
- 登录Route53控制台,确认
banuka.com的A记录:名称栏可填banuka.com或留空(Route53中留空代表根域名),目标IP是EC2公网IP,记录状态为启用,TTL设置合理(默认300即可)。
- 登录Route53控制台,确认
- 验证Namecheap的Nameservers配置
- 在Namecheap后台确认已完全替换为Route53提供的4个Nameserver地址,无拼写错误或遗漏。DNS变更通常需要1-24小时全球生效,可执行
dig NS banuka.com检查返回的Nameservers是否为AWS提供的地址。
- 在Namecheap后台确认已完全替换为Route53提供的4个Nameserver地址,无拼写错误或遗漏。DNS变更通常需要1-24小时全球生效,可执行
- 清除本地DNS缓存
本地缓存可能保留旧记录,执行对应系统的清除命令:- macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - Windows:
ipconfig /flushdns - Linux:
sudo systemd-resolve --flush-caches
- macOS:
- 检查Nginx配置
确保Nginx配置文件中包含banuka.com的server块,示例如下:
配置完成后重启Nginx:server { listen 80; server_name banuka.com; root /usr/share/nginx/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } }sudo systemctl restart nginx
内容的提问来源于stack exchange,提问作者Jananath Banuka
相关产品推荐
相关产品推荐

