AWS VPC 实例不解析公有 DNS 名称

Posted

技术标签:

【中文标题】AWS VPC 实例不解析公有 DNS 名称【英文标题】:AWS VPC instance doesn't resolve public DNS name 【发布时间】:2015-02-19 13:19:22 【问题描述】:

问题:

我的 url xyz.co 正在解析为丑陋的 AWS 公共 DNS 名称,例如 ec2-11-22-33-44.ap-southeast-2.compute.amazonaws.com。它不坚持 xyz.co。

这就是我所做的:

我已经根据http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html 设置了我的 Route 53 配置,因此我创建了一个指向 IP 地址的 A 记录和一个 CNAME 别名记录以允许 www.xyz.co。该域与 godaddy 坐在一起,名称服务器配置为 AWS 委托集。

实例本身位于默认 VPC 中。我仔细检查了 DNS 解析和 DNS 主机名都处于活动状态。

我有点卡在这里。任何帮助将不胜感激!

干杯, 布鲁诺

【问题讨论】:

“正在解决”是什么意思?您是说浏览器中的地址栏从所需地址更改为通用地址……还是其他? 如果我在地址字段中输入 xyz.co,它会在显示页面内容时变为 ec2-11-22-33-44.ap-southeast-2.compute.amazonaws.com。如果我直接输入 IP 地址,同样适用。不过,我希望它坚持使用 xyz.co。 【参考方案1】:

您所看到的实际上与名称解析无关。

DNS 不可能更改 Web 浏览器地址栏中显示的内容 - DNS 和 Web 浏览器根本不会以使这种行为成为可能的方式进行交互。您的 URL 不会通过任何与 DNS 相关的东西“被解析为”这个新值,因为正确或错误配置的 DNS 本身不会影响那里显示的内容。

导航到 IP 地址具有相同影响的事实支持了这一断言。

您所看到的与 DNS 或 Route 53 甚至 EC2 或 VPC 没有任何关系。无论出于何种原因,您的网络服务器都被配置为将带有任何其他主机名的传入请求重定向到您随后在地址栏中看到的主机名(这是您不喜欢的主机名)。

您应该在 Web 服务器的日志中注意到这一点。它将在初始请求上发出 301 或 302 重定向。

您还应该能够使用curl 命令行实用程序自己验证这一点。在这里,作为“www.example.com”访问的服务器正在重定向浏览器以使用其首选地址“example.com”。 (主机名和地址已清理,但输出未修改。)

$ curl -v www.example.com
* Rebuilt URL to: www.example.com/
* Hostname was NOT found in DNS cache
*   Trying 203.0.113.139...
* Connected to www.example.com (203.0.113.139) port 80 (#0)

下一个输出块是发送到 Web 服务器的请求。

> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: www.example.com
> Accept: */*
>

来自网络服务器的 http 响应包含重定向。

< HTTP/1.1 301 Moved Permanently
< Content-length: 0
< Location: http://example.com/
< Connection: close
<
* Closing connection 0

如果我们使用浏览器而不是命令行工具,这将导致地址栏更改为新值,并建立与 Web 服务器的新连接(实际上可能是相同的,也可能是不同的)一个......在这种情况下,它是相同的)。

尽管我在浏览器中输入了http://www.example.com,但它现在只显示http://example.com/。如果我输入 IP 地址 if 我的服务器被配置为将所有内容重定向到一个主机名,也会发生同样的事情,就像你的主机名一样。就我而言,它是故意配置为做其他事情的。

以上内容应该说明您实际上并没有 DNS 问题,并解释导致这种情况发生的机制(因为您可能会发现这对于将来故意这样做很有用,就像我的网络服务器所做的那样——任何 www.* 请求都会在没有 www 的情况下被剥离和重写。

问题在于您的网络服务器,它告诉浏览器使用不同的主机名。如何解决这个问题取决于您正在运行的 Web 服务器以及它认为需要重定向的原因。

【讨论】:

你是对的...... curl 显示了 302 临时重定向。我正在使用 bitnami AMI 多站点 wordpress 图像。我不确定为什么会这样配置。

以上是关于AWS VPC 实例不解析公有 DNS 名称的主要内容,如果未能解决你的问题,请参考以下文章

在AWS上配置基本的VPC

EC2 t2.micro 实例没有公共 DNS

AWS VPC 模块公有和私有子网 - Terraform

AWS 弹性负载均衡器 DNS 名称更改和 Route 53 (PHP)

关于AWS-VPC中的公有子网与私有子网-Public and private subnets

AWS手动创建VPC