出现“ERR_NAME_NOT_RESOLVED”错误通常表示域名无法被正确解析。当您在使用 AWS Route 53 和 Elastic Beanstalk 时,这个问题可能由多种原因引起。以下是一些可能的原因及其解决方法:
1. 检查域名是否正确配置在 Route 53 中
- 确认域名已注册:确保您的域名已在 Route 53 中注册,或者通过其他注册商注册但已将域名委托给 Route 53 的名称服务器。
- 检查托管区域:登录到 AWS 管理控制台,导航到 Route 53,确认您有一个与您的域名匹配的托管区域。
2. 验证域名的名称服务器(NS)记录
- 检查 NS 记录:在您的域名注册商处,确保域名的名称服务器(NS)记录指向 Route 53 提供的名称服务器。通常,Route 53 会在创建托管区域时提供这些名称服务器地址。
- 更新 NS 记录:如果名称服务器不正确,更新它们以指向 Route 53 的名称服务器。
3. 检查 Route 53 中的记录集配置
- A 记录或 CNAME 记录:确保为域名或子域名(如
www.example.com
)配置了正确的 A 记录或 CNAME 记录,指向您的 Elastic Beanstalk 环境的终端节点。- 对于 应用负载均衡器(ALB):通常使用 A 记录,并指向 ALB 的 DNS 名称。
- 对于 经典负载均衡器或实例:可能使用 CNAME 记录,指向 Elastic Beanstalk 提供的域名。
4. 确认 Elastic Beanstalk 环境的终端节点
- 检查环境配置:登录到 AWS 管理控制台,导航到 Elastic Beanstalk,选择您的环境,查看其终端节点(Endpoint)是否正确配置。
- 等待部署完成:如果您的应用刚刚部署,可能需要等待几分钟,直到环境完全启动并且终端节点可用。
5. 清除 DNS 缓存
- 本地缓存:有时,本地 DNS 缓存可能导致解析问题。尝试清除本地 DNS 缓存:
- Windows:在命令提示符中运行
ipconfig /flushdns
。 - macOS/Linux:使用
sudo killall -HUP mDNSResponder
(macOS)或 sudo systemd-resolve --flush-caches
(某些 Linux 发行版)。
- 公共 DNS:如果您使用的是公共 DNS 服务(如 Google DNS 或 Cloudflare DNS),尝试切换回默认的 ISP DNS 或其他可靠的 DNS 服务。
6. 检查安全组和网络 ACL
- 安全组:确保您的 Elastic Beanstalk 环境的安全组允许来自所需来源(如互联网)的入站流量,特别是 HTTP(80)和 HTTPS(443)端口。
- 网络 ACL:如果您使用 VPC,检查与 Elastic Beanstalk 环境关联的网络 ACL 是否允许必要的流量。
7. 验证域名是否被阻止或限制
- 防火墙设置:检查是否有任何防火墙或安全软件阻止了对域名或服务器的访问。
- AWS WAF:如果您使用了 AWS WAF,确保规则没有错误地阻止了对域名的访问。
8. 检查域名是否过期或被暂停
- 域名状态:登录到您的域名注册商,检查域名的状态是否为“激活”。如果域名已过期或被暂停,需要续费或恢复域名。
9. 使用 AWS 支持进行排查
- 如果经过上述步骤问题仍未解决,建议联系 AWS 支持。提供相关的配置信息和错误日志,他们可以帮助您更深入地排查问题。
示例:在 Route 53 中配置 A 记录指向 Elastic Beanstalk
- 登录 AWS 管理控制台,导航到 Route 53。
- 选择托管区域,然后点击“记录集”。
- 创建新的记录集:
- 名称:输入您的域名(例如
example.com
)或子域名(例如 www.example.com
)。 - 类型:选择
A - IPv4 地址
。 - 别名:选择“是”。
- 别名目标:选择您的 Elastic Beanstalk 环境的终端节点(通常以
awseb-xxxxxxxxx-xxxxxxxxx.us-east-1.elasticbeanstalk.com
形式)。
- 保存记录集。
完成上述步骤后,等待 DNS 传播(通常几分钟到几小时),然后尝试访问您的域名。