我希望我的 EC2 实例公共 URL 的子域名能够指向我机器上的不同文档树foo.ec2-012-345-678-901.eu-west-1.compute.amazonaws.com
,DocumentRoot
因此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 区域。