我正在尝试使用依赖于客户端子域的遗留应用程序进行一些测试.所以在实际应用中,你可以去:
clienta.domain.com
它将为客户A打开一个特定区域.
使用EC2,我试图让应用程序只使用与此类似的公共DNS地址:
ec2-123-123-123-123.compute-1.amazonaws.com
问题是,设置我的虚拟主机(如此帖子),适用于主公共DNS地址,但不适用于子域.
clienta.ec2-123-123-123-123.compute-1.amazonaws.com => 不工作
我想这是因为还必须创建DNS CNAME记录?我显然不拥有amazonaws.com所以没有能力做到这一点.
这是vhost设置:
NameVirtualHost *:80 # Primary domainDocumentRoot "/var/www/vhosts/myapp" ServerName ec2-123-123-123-123.compute-1.amazonaws.com # Wildcard Sub DomainsOptions Indexes MultiViews FollowSymLinks AllowOverride All Order allow,deny Allow from all DocumentRoot "/var/www/vhosts/myapp" ServerName clients.ec2-123-123-123-123.compute-1.amazonaws.com ServerAlias *.ec2-123-123-123-123.compute-1.amazonaws.com Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,deny Allow from all
TL; DR; 在不弄乱DNS的情况下,是否有一种简单的方法可以将子域与Amazon EC2公共DNS地址一起使用?
注意:我试图避免在我们的DNS中添加仅在短时间内使用的记录.
如果我必须使用自己的域名,我该如何解决两个子域名?例如,如果我创建staging.mydomain.com以指向EC2实例,那么现在我将如何访问clienta.staging.mydomain.com?
您需要使用自己的DNS才能使用子域.AWS的DNS在其动态分配的DNS上没有通配符记录.
你可以试试:
dig clients.ec2-123-123-123-123.compute-1.amazonaws.com
你会得到0个答案.
至于:
如果我必须使用自己的域名,我该如何解决两个子域名?例如,如果我创建staging.mydomain.com以指向EC2实例,那么现在我将如何访问clienta.staging.mydomain.com?
同样,您需要DNS记录clienta.staging.mydomain.com指向主机的IP地址,然后让Apache或任何服务器通道请求到正确的vhost.但是你的clienta.staging.mydomain.com
请求永远不会知道去哪里,除非有明确的dns条目.某些DNS服务提供基于通配符的全方位DNS条目(即*.clients.blah.com
),因此如果您的DNS提供商支持,这可能是一个选项.
另一个建议是使用目录而不是子域.因此,不是创建一个新的子域,而是拥有clients.domain.com
DNS条目,然后拥有clients.domain.com/clienta
和clients.domain.com/clientb
你为什么不使用自己的域名?大多数基于EC2的Web服务不使用EC2公共DNS,因为公共DNS可能会发生变化.
您可能想要调查的是使用弹性IP,以便为您的实例提供可以配置DNS的稳定IP地址,然后将这些弹性IP附加到您的EC2实例.
以下是有关Elastic IP的AWS文档:http://aws.amazon.com/articles/1346
当然,如果您计划使用负载平衡配置,那么您实际上将使用Elastic Load Balancer而不是Elastic IP.在此配置中,您的DNS将指向ELB.
以下是有关Elastic Load Balancing的信息:http://aws.amazon.com/elasticloadbalancing/