我有一个名为 的域名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.com
blog.dumbdom.com
404-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 地址也会发生同样的情况。