基于名称的虚拟主机 - 指定域名,同时保留 IP 地址

基于名称的虚拟主机 - 指定域名,同时保留 IP 地址

我有一个名为 的域名dumbdom.com。我的 AWS EC2 实例有一个名为 的弹性 IP my.ela.stic.ip。我的基于 Linux 的 EC2 实例的 htdocs 根目录位于/var/www/html/

我已经设置了/etc/httpd/conf.d/vhost.conf文件来引导域名dumbdom.com/var/www/html/my_dumb_app/一切运行正常!vhost.conf文件如下所示:

NameVirtualHost *
<VirtualHost *> 
   ServerName dumbdom.com
   DocumentRoot /var/www/html/my_dumb_app
</VirtualHost>
<VirtualHost *> 
    ServerName blog.dumbdom.com
    DocumentRoot /var/www/html/my_blog_directory
</VirtualHost>

现在,我希望dumbdom.com&blog.dumbdom.com继续分别降落在/var/www/html/my_dumb_app/&上/var/www/html/my_blog_directory;我还希望通过my.ela.stic.ip地址的其他所有内容都像平常一样简单地转到/var/www/html。这样,去往dumbdom.com和去往my.ela.stic.ip/my_dumb_app最终会降落在同一位置。

碰巧的是,由于我的 vhost.conf 文件有&<VirtualHost>标签,尝试通过 elastic_ip 访问服务器的其他目录会导致错误。dumbdom.comblog.dumbdom.com404-NotFound

谢谢

答案1

按照http://httpd.apache.org/docs/2.2/vhosts/name-based.html,您可以为 IP 地址创建一个 VirtualHost 条目。

所以你会得到类似的东西

<VirtualHost my.elas.stic.ip>
   ServerName my.elas.stic.ip
   DocumentRoot /var/www/html
</VirtualHost>

还要注意,第一个 vhost 声明是默认的 - 这可能不会影响您,但任何通过实例外部 IP 或 EC2 实例域名访问您的实例的人都会获得先到者。

编辑:有几种方法可以访问您的 EC2 实例。首先,每个实例都有公共和私有 IP 地址,以及公共和私有 DNS 条目。通过其中一个 (即 ec2-xxxxyamazonaws.com) 访问实例将不会与任何主机名匹配,因此将选择默认值。当您重新启动实例时,在重新分配弹性 IP 地址之前,外部 IP 地址也会发生同样的情况。

相关内容