dig +trace:无法访问我的域名的服务器?

dig +trace:无法访问我的域名的服务器?

我正在 AWS 中构建我的应用程序。

我已经将 Reactjs 前端项目部署在 EC2 实例中。我希望将其置于 AWS API 网关后面,而不是让来自外部互联网世界的用户直接访问我的 EC2 实例。因此,AWS API 网关将成为我应用程序前端和后端服务的唯一入口点。以下是计划:

外部世界 ---> AWS API 网关 ---> 网络负载均衡器 ---> 我的 VPC 目标组 / EC2 实例

以下是我所做的:

  1. Reactjs Frontend 项目在 EC2 实例上运行良好;我可以使用 EC2 实例的公共 IP 地址访问网页。

  2. 配置良好的目标组和网络负载均衡器。我通过在浏览器中输入 NLB 的 DNS 名称(即)进行确认http://myapp-frontend-NLB-c11112esd43524rw.elb.ap-northeast-1.amazonaws.com,它成功加载/打开了我的应用程序的前端网页。

  3. 我已经创建了新的 AWS API 网关(REST API)并为其配置了自定义域名。(使用 AWS 证书管理器处理 https 证书)。

    即自定义域名为frontend.myapp.com;API 网关域名为d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com

    我已经NS在我的 DNS 提供商中为他们创建了新记录,因此frontend.myapp.com指向d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com

  4. 我已经关注过这个 aws 文档:https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-private-integration.html一步步配置VPC链接,API资源,集成类型等。

部署创建的API后,点击打开Invoke URL( 形式https://123qwe123qe.execute-api.ap-northeast-1.amazonaws.com/[stage])可以看到返回的HTML代码。


我预期当我frontend.myapp.com在浏览器里访问时,DNS最终会把流量导向API Gateway的域名d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com,然后API Gateway会把请求传递给NLB等等,最终加载网页/或者返回相同的HTML代码。

但是我frontend.myapp.com在浏览器中访问时没有任何反应,我以为是DNS记录没有起作用,dig +trace docloud.iwg-inc.co.jp.结果如下:


; <<>> DiG 9.10.6 <<>> +trace frontend.myapp.com.
;; global options: +cmd
.     3240  IN  NS  i.root-servers.net.
.     3240  IN  NS  d.root-servers.net.
.     3240  IN  NS  b.root-servers.net.
.     3240  IN  NS  m.root-servers.net.
.     3240  IN  NS  j.root-servers.net.
.     3240  IN  NS  h.root-servers.net.
.     3240  IN  NS  f.root-servers.net.
.     3240  IN  NS  g.root-servers.net.
.     3240  IN  NS  k.root-servers.net.
.     3240  IN  NS  c.root-servers.net.
.     3240  IN  NS  a.root-servers.net.
.     3240  IN  NS  l.root-servers.net.
.     3240  IN  NS  e.root-servers.net.
;; Received 811 bytes from 240d:1a:6a5:c900:e67e:66ff:fe1f:bf4c#53(240d:1a:6a5:c900:e67e:66ff:fe1f:bf4c) in 29 ms

 
 ...other results...

frontend.myapp.com.  14400 IN  NS  d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.
;; Received 117 bytes from 54.68.111.244#53(ns4.jp-domains.jp) in 131 ms

;; connection timed out; no servers could be reached

正如你所见, frontend.myapp.com.确实指向了d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.一条NS记录。

然而,它说connection timed out; no servers could be reached

d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.是我的 API 网关的自定义域名,我已经使用调用 URL 对其进行了测试,并且它已连接到服务。

为什么会这么说no servers could be reached

这是什么意思?我该如何解决并完成流程?

答案1

frontend.myapp.com.  14400 IN  NS  d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.

NS记录类型适用于名称服务器。

当前记录的意思是:如果你想了解有关frontend.myapp.com子域名或该子域名下任何记录的 DNS 相关信息,请询问运行在d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com

而且 d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com 根本不是名称服务器,因此不会对发送到那里的 DNS 查询做出任何响应。
这就是 connection timed out; no servers could be reached您看到的错误。

思考您打算设置一条 DNSCNAME记录,基本上就是说,如果您想访问 frontend.myapp.com,请使用 d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com 的 IP 地址。

答案2

您需要创建指向 AWS API 网关的 CNAME 记录d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.,而不是 NS 记录。

相关内容