使用子域与Amazon EC2公共DNS地址?

问题描述 投票:9回答:3

我正试图用一个传统的应用程序做一些测试,该应用程序依赖于客户的子域。所以在实际应用中,你可以去。

clienta.domain.com

并且会为客户端A打开一个特定的区域。

使用EC2,我试图让应用程序只使用公共DNS地址工作,它看起来类似于这样。

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

问题是,设置我的vhosts(喜欢这个职位),对于主公网DNS地址可以正常工作,但对于子网域就不行了。

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

我猜想这是因为还必须创建一个DNS CNAME记录?我显然不拥有 amazonaws.com 所以没有能力做到这一点。

这里是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>

TL;DR; 如果不使用DNS,有一个简单的方法来使用亚马逊EC2公共DNS地址的子域吗?

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

更新

如果我 必须 使用我自己的域名,如何解决两个子域名的问题?例如,如果我创建了 staging.mydomain.com 指向EC2实例,现在我如何访问 clienta.staging.mydomain.com。?

apache amazon-web-services dns amazon-ec2
3个回答
6
投票

为什么不使用自己的域名? 大多数基于EC2的Web服务都不使用EC2的公共DNS,因为这个公共DNS很可能会改变。

你可能想调查的是使用弹性IP,以便给你的实例提供稳定的IP地址,你可以针对这些地址配置DNS,然后将这些弹性IP附加到你的EC2实例上。

这里是AWS关于弹性IP的文档。http:/aws.amazon.comarticles1346

当然,如果你计划使用负载均衡配置,那么你实际上会使用弹性负载均衡器而不是弹性IP。 在这种配置中,你的DNS将直接到ELB。

这里是关于弹性负载均衡的信息。http:/aws.amazon.comelasticloadbalancing(弹性负载平衡)


5
投票

需要 来使用自己的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/clientaclients.domain.com/clientb


0
投票

您可以使用另一个通配符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
© www.soinside.com 2019 - 2024. All rights reserved.