我希望我的 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 和一个标准的亚马逊公共 URL:
http://ec2-012-345-678-901.eu-west-1.compute.amazonaws.com
我可以访问该 URL 并看到我的 Hello World 测试页面。
我设置了两个 VirtualHosts。
<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。我认为这无关紧要,但它已经成为一些问题的原因。
干杯,
您需要将
ServerName
虚拟主机的 Apache 设置为您想要服务的实际主机名,例如foo.example.com
, 而不是 EC2 内部主机名(尽管ServerAlias
如果您希望它可以访问,您可以使用它)。遗憾的是,您不能将 EC2 主机名用作 Route 53 中的域;你必须使用你自己的域名。
我刚刚检查了我的几个实例,Amazon没有通配实例公共 URL。
ec2-012-345-678-901.eu-west-1.compute.amazonaws.com 会工作,但 *.ec2-012-345-678-901.eu-west-1.compute.amazonaws.com 不会.
这也行不通。您可以设置所有您喜欢的记录,但没有人会看到它们,因为亚马逊不会将子域委托给您的 Route53 区域。