AWS VPC实例无法解析公有DNS名称

时间:2014-12-21 00:52:57

标签: amazon-web-services amazon-ec2 dns vpc

问题:

我的网址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主机名都是活动的。

我有点困在这里。任何帮助将非常感谢!

干杯, 布鲁诺

1 个答案:

答案 0 :(得分:2)

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

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

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

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

您应该在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: */*
>

来自Web服务器的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地址,如果我的服务器被配置为将所有内容重定向到一个主机名,就会出现同样的情况,就像你的主机名一样。在我的情况下,它被故意配置为做其他事情。

上面应该说明你实际上没有DNS问题,并解释导致这种情况发生的机制(因为你可能会发现这是将来有意做的事情,就像我的网络服务器那样 - 任何www。*请求都会被剥离并在没有www)的情况下重写。

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