将 Route 53 与 EC2 公共 DNS 和虚拟主机结合使用

将 Route 53 与 EC2 公共 DNS 和虚拟主机结合使用

我希望我的 EC2 实例公共 URL 的子域名能够指向我机器上的不同文档树foo.ec2-012-345-678-901.eu-west-1.compute.amazonaws.comDocumentRoot因此bar.ec2-012-345-678-901.eu-west-1.compute.amazonaws.com

我的 AWS EC2 实例有一个弹性 IP 和一个标准的 Amazon 公共 URL:

http://ec2-012-345-678-901.eu-west-1.compute.amazonaws.com

我可以访问该 URL 并看到我的 Hello World 测试页面。

我已经设置了两个 VirtualHost。

<VirtualHost *:80>
  DocumentRoot /var/www/foo/public
  ServerName foo.ec2-012-345-678-901.eu-west-1.compute.amazonaws.com
  ServerAlias ec2-012-345-678-901.eu-west-1.compute.amazonaws.com
</VirtualHost>
<VirtualHost *:80>
  DocumentRoot /var/www/bar/public
  ServerName bar.ec2-012-345-678-901.eu-west-1.compute.amazonaws.com
</VirtualHost>

在 AWS Route 53 中,我设置了一个带有域名的托管区域 ec2-012-345-678-901.eu-west-1.compute.amazonaws.com

在记录集中我添加了两个 CNAME 记录:

1)

  • 名称:foo.ec2-012-345-678-901.eu-west-1.compute.amazonaws.com
  • TTL: 60
  • 值:ec2-012-345-678-901.eu-west-1.compute.amazonaws.com
  • 路由策略:简单
  • 别名:否

2)

  • 名称:bar.ec2-012-345-678-901.eu-west-1.compute.amazonaws.com
  • TTL: 60
  • 值:ec2-012-345-678-901.eu-west-1.compute.amazonaws.com
  • 路由策略:简单
  • 别名:否

我的浏览器找不到虚拟主机中定义的任何 URL。我使用的是 OpenDNS,但我可以通过 SSH 连接到其他几台机器并尝试 curl 和 wget,但总是收到错误“名称或服务未知”或“无法解析主机”。

我今天对这些设置进行了一些调整,但我记得我 24 小时前就是这样设置的。

我需要做什么才能让我的虚拟主机解析我定义的目录?

注意:我在 RHEL 上启用了 SELinux。我认为这不相关,但它已经导致了一些问题。

干杯,

答案1

您需要将ServerName虚拟主机的 Apache 设置为您想要提供服务的实际主机名,例如foo.example.com,而不是 EC2 内部主机名(尽管ServerAlias如果您希望它可访问,您可以使用)。

不幸的是,您不能将您的 EC2 主机名用作 Route 53 内的域;您必须使用您自己的域名。

答案2

我希望我的 EC2 实例公共 URL 的子域指向我机器上的不同文档树,因此 foo.ec2-012-345-678-901.eu-west-1.compute.amazonaws.com 具有与 bar.ec2-012-345-678-901.eu-west-1.compute.amazonaws.com 不同的 DocumentRoot

我刚刚检查了我的几个实例,亚马逊确实不是通配符实例公共 URL。

ec2-012-345-678-901.eu-west-1.compute.amazonaws.com 可以工作,但 *.ec2-012-345-678-901.eu-west-1.compute.amazonaws.com 不工作。

在 AWS Route 53 中,我设置了一个托管区域,域名为 ec2-012-345-678-901.eu-west-1.compute.amazonaws.com

这也行不通。您可以设置所有您想要的记录,但没有人会看到它们,因为亚马逊不会将子域委托给您的 Route53 区域。

相关内容