Apache 2多个虚拟主机与一个IP虚拟主机

我有一个在AWS上运行的实例,有一个Apache 2,两个命名域和一个ip。

我设法configurationApache和两个域(domain1.com和domain2.com)。 第一个域的docroot指向/var/www/html/vh/domain1.com第二个域的docroot指向/var/www/html/vh/domain2.com

还行吧。

问题是,我想直接在浏览器上使用IP访问/ var / www / html。

当我试图做到这一点,我得到的网站托pipe在domain1.com。

我怎样才能做到这一点??

httpd.conf中的相关行:

ServerName 9.9.9.9:80 DocumentRoot "/var/www/html" NameVirtualHost *:80 <VirtualHost 9.9.9.9:80> DocumentRoot /var/www/html </VirtualHost> <VirtualHost 9.9.9.9:80> DocumentRoot /var/www/html/vh/domain1.com ServerName domain1.com DirectoryIndex index.php </VirtualHost> <VirtualHost 9.9.9.9:80> DocumentRoot /var/www/html/vh/domain2.com ServerName domain2.com DirectoryIndex index.php </VirtualHost> 

如果我尝试访问:

 http://9.9.9.9 

我得到/var/www/html/vh/domain1.com下的页面,而不是/ var / www / html托pipe的页面

我究竟做错了什么?

Thx提前!

您的NameVirtualHost<VirtualHost>指令必须匹配。 这意味着你必须改变

 NameVirtualHost *:80 

 NameVirtualHost 9.9.9.9:80 

否则改变每一个

 <VirtualHost 9.9.9.9:80> 

 <VirtualHost *:80> 

另外,我会build议默认的虚拟主机将服务器的实际主机ServerName作为ServerName ,而不是IP地址。 由于它将是默认的,所以当您仅使用IP地址进行连接时,它仍将是您select的那个。

您可以检查apache如何使用命令apache2ctl -S解释您的configuration。 它列出了所有的虚拟主机和他们的顺序,因为他们目前使用的Apache。 当使用IP地址访问服务器时,将使用该列表中的默认服务器 。 您可能会加载其他使用的虚拟主机configuration。

此外,ServerName应该是您的服务器的完全限定的域名,而不是IP地址。 要查看当前完全限定的域名,请使用hostname --fqdn