我正在尝试使用依赖于客户端子域的遗留应用程序进行一些测试。所以在实际应用中,你可以去:
clienta.domain.com
它将为客户 A 打开一个特定区域。
使用 EC2,我试图让应用程序仅使用与此类似的公共(public) DNS 地址工作:
ec2-123-123-123-123.compute-1.amazonaws.com
问题是,设置我的虚拟主机( like this post )对于主公共(public) DNS 地址工作正常,但不适用于子域。
clienta.ec2-123-123-123-123.compute-1.amazonaws.com => DOES NOT WORK
我想这是因为还必须创建 DNS CNAME 记录?我显然不拥有 amazonaws.com 所以没有能力做到这一点。
这是虚拟主机设置:
NameVirtualHost *:80
# Primary domain
<VirtualHost *:80>
DocumentRoot "/var/www/vhosts/myapp"
ServerName ec2-123-123-123-123.compute-1.amazonaws.com
<Directory "/var/www/vhosts/myapp">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
# Wildcard Sub Domains
<VirtualHost *:80>
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
<Directory "/var/www/vhosts/myapp">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
TL;博士; 在不弄乱 DNS 的情况下,是否有一种简单的方法可以将子域与 Amazon EC2 公有 DNS 地址一起使用?
注意:我试图避免将记录添加到我们的 DNS 中,这些记录只会在短时间内使用。
更新
如果我 必须使用我自己的域,如何解决两个子域?例如,如果我创建 staging.mydomain.com 指向 EC2 实例,现在我将如何访问 clienta.staging.mydomain.com ?
最佳答案
为什么不使用自己的域名?大多数基于 EC2 的 Web 服务不使用 EC2 公共(public) DNS,因为该公共(public) DNS 可能会更改。
您可能想要调查的是使用弹性 IP,以便为您的实例提供可以配置 DNS 的稳定 IP 地址,然后将这些弹性 IP 附加到您的 EC2 实例。
这是有关弹性 IP 的 AWS 文档:http://aws.amazon.com/articles/1346
当然,如果您计划使用负载均衡配置,那么您实际上会使用 Elastic Load Balancer 而不是 Elastic IP。在此配置中,您的 DNS 将定向到 ELB。
以下是有关 Elastic Load Balancing 的信息:http://aws.amazon.com/elasticloadbalancing/
关于apache - 将子域与 Amazon EC2 公有 DNS 地址一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20805805/