基于名称的虚拟主机 – 指定一个域名,并保持打开的IP地址

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

我已经build立了/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.comblog.dumbdom.com分别保持login到/var/www/html/my_dumb_app//var/www/html/my_blog_directory ; 我也希望通过my.ela.stic.ip地址的其他一切简单地去正常的/var/www/html 。 所以去dumbdom.commy.ela.stic.ip/my_dumb_app最终会在相同的位置登陆。

因为我的vhost.conf文件有dumbdom.comblog.dumbdom.com <VirtualHost>标签,试图通过blog.dumbdom.com访问服务器的其他目录会导致404-NotFound错误。

谢谢

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

所以你会有类似的东西

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

另外请注意,第一个虚拟主机声明是默认的 – 这可能不会影响到您,但是任何通过实例外部IP或EC2实例域名访问您的实例的人都会得到任何优先权。

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