Apache 是否使用具有Amazon EC2公共DNS地址的子域?

Apache 是否使用具有Amazon EC2公共DNS地址的子域?,apache,amazon-web-services,dns,amazon-ec2,Apache,Amazon Web Services,Dns,Amazon Ec2,我正在尝试对一个依赖子域的遗留应用程序进行一些测试。因此,在实际应用程序中,您可以访问: clienta.domain.com 它将为客户a打开一个特定区域 使用EC2,我试图让应用程序仅使用公共DNS地址工作,该地址类似于: ec2-123-123-123-123.compute-1.amazonaws.com 问题是,设置我的vhosts(),对于主公共DNS地址可以很好地工作,但对于子域不起作用 clienta.ec2-123-123-123-123.compute-1.amazonaws

我正在尝试对一个依赖子域的遗留应用程序进行一些测试。因此,在实际应用程序中,您可以访问:

clienta.domain.com

它将为客户a打开一个特定区域

使用EC2,我试图让应用程序仅使用公共DNS地址工作,该地址类似于:

ec2-123-123-123-123.compute-1.amazonaws.com

问题是,设置我的vhosts(),对于主公共DNS地址可以很好地工作,但对于子域不起作用

clienta.ec2-123-123-123-123.compute-1.amazonaws.com=>不工作

我想这是因为还必须创建DNS CNAME记录?我显然不拥有亚马逊网站,所以我没有这个能力

以下是vhost设置:

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>
NameVirtualHost*:80
#主域
DocumentRoot“/var/www/vhosts/myapp”
服务器名ec2-123-123-123-123.compute-1.amazonaws.com
选项索引多视图跟随符号链接
允许超越所有
命令允许,拒绝
通融
#通配符子域
DocumentRoot“/var/www/vhosts/myapp”
ServerName clients.ec2-123-123-123.compute-1.amazonaws.com
ServerAlias*.ec2-123-123-123-123.compute-1.amazonaws.com
选项索引多视图跟随符号链接
允许超越所有
命令允许,拒绝
通融
TL;博士在不干扰DNS的情况下,有没有一种简单的方法可以使用带有Amazon EC2公共DNS地址的子域

注意:我试图避免在DNS中添加只会在短时间内使用的记录

更新
如果我必须使用自己的域,我如何处理两个子域?例如,如果我创建staging.mydomain.com指向EC2实例,那么现在我如何访问clienta.staging.mydomain.com

为什么您不使用自己的域名?大多数基于EC2的web服务不使用EC2公共DNS,因为该公共DNS可能会更改

您可能希望研究的是使用弹性IP,以便为您的实例提供稳定的IP地址,您可以根据这些地址配置DNS,然后将这些弹性IP连接到您的EC2实例

以下是关于弹性IP的AWS文档:

当然,如果您计划使用负载平衡配置,那么实际上您将使用弹性负载平衡器,而不是弹性IP。在此配置中,您的DNS将指向ELB


以下是关于弹性负载平衡的信息:

您需要使用自己的DNS才能使用子域。AWS的DNS在其动态分配的DNS上没有通配符记录

您可以尝试:

dig clients.ec2-123-123-123-123.compute-1.amazonaws.com
您将收到0个答案

至于:

如果我必须使用自己的域,我如何处理两个子域?例如,如果我创建staging.mydomain.com来指向EC2实例,那么现在如何访问clienta.staging.mydomain.com

同样,您需要一个指向主机IP地址的DNS记录clienta.staging.mydomain.com,然后让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
您可以使用另一个通配符DNS服务,例如nip.io

clienta.ec2-123-123-123-123.nip.io

使用
host
命令检查它:

$ host ec2-123-123-123-123.nip.io
ec2-123-123-123-123.nip.io has address 123.123.123.123

$ host clienta.ec2-123-123-123-123.nip.io
clienta.ec2-123-123-123-123.nip.io has address 123.123.123.123

这个设置实际上是为了测试几个小时,然后放弃。就我自己的域而言,我尝试创建一个“staging.mydomain.com”并指向它,但随后我遇到了如何拥有两个子域的问题,如“client1.staging.mydomain.com”?@cillosis使用弹性IP。您可以在启动实例时附加它们,当实例停止时,它们将自动分离。在您的示例中,
staging.mydomain.com
client1.staging.mydomain.com
都需要DNS,因为它们是两个独立的、不相关的子域。弹性IP不是免费的。请更新我的答案以回答您的更新问题。