CNAME不改变Apache

我有一个Amazon EC2实例,其中包含一个静态公有IP和一个由亚马逊分配的公有域名(ec2-my-hosts-public-ip.compute-1.amazonaws.com,我们称之为ec2.amazon.com)。

我有一个域名example.com。 在我的DNS中,我有example.com转发指向www.example.com。

www.example.com有一个指向我的ec2实例公共IP的名字logging。

在我的ec2实例中,我有两个Web文件夹:/ var / www和/ var / www-public。 Apache虚拟主机设置为指向www.example.com / var / www-public。 默认情况下,vhosts指向/ var / www上的ec2.amazon.com。 享受这个小桌子:

www.example.com --> /var/www-public ec2.amazon.com --> /var/www 

我想为我的ec2.amazon.com地址(请记住,它确实是ec2-my-hosts-public-ip.compute-1.amazonaws.com)更短的别名,所以我设置了一个CNAMElogging指向ec2.example。 com在ec2.amazon.com:

 ec2.example.com CNAME ec2.amazon.com 

但是,我遇到了一个问题。 许多(可能所有?)DNS设置将通过简单地返回ec2.amazon.com的IP地址来响应对ec2.example.com的请求,就好像它刚刚find了A名logging一样,客户端将不能告诉别名涉及。 这是一个问题,因为那么浏览器发送到我的服务器的HTTP请求将域名列为“ec2.example.com”而不是“ec2.amazon.com”,而我的服务器没有为ec2.example设置虚拟主机。 com,所以它只是默认为错误的页面。

由于原因不是很重要,我不能改变这个Apacheconfiguration。 只使用DNSlogging,是否有可能对此进行补救? 一个理想的解决scheme是客户端(很可能是浏览器)以某种方式被告知这个别名,以便它可以在其HTTP请求头中发送“ec2.amazon.com”。 基本上,我希望它像一个DNS的前进,而不是一个正常的CNAME。 我最初认为PTRlogging看起来很有希望,因为根据维基百科的说法,“与CNAME不同,DNS处理不会进行,只是名称被返回”,这正是我想要的(至less名称被返回部分),但后来我发现PTRlogging只与反向DNS的IP地址相关联。

浏览器与IP地址对话,而不是域名。 但是要定位好域名,他们会传递一个标题“Host:ec2.amazon.com”,这个值通常是在地址栏中显示的(或者隐藏在iframe中的)。 如果您不能使用名称ec2.example.com来configuration您的虚拟主机,那么您应该将其redirect到longaddress.amazon.com,或将longaddress.amazon.comembedded到iframe中。 这是一个简单的redirect,不一定涉及DNS设置,而且CNAME不是解决scheme。

因此,您必须在可能的地方托pipeec2.example.com,并且该页面应包含框架以包含longaddress.amazon.com,或者页面应该将(Meta或Location:标题)redirect到longaddress。