具有域和IP的Apache NameVirtualHost

我有几个IP,我试图在Apache2中configuration。 我试过四处搜寻,但似乎我可能要求太多。

我想将每个IP的每个直接请求(例如http://155.155.155.100 )路由到专用的DocumentRoot(例如/www/155.155.155.00/)。

虽然parsing为相同IP(155.155.155.100)的域将具有单独的DocumentRoot。 到目前为止,Apache没有路由IP的问题,但它不喜欢在域之间共享它们。

我的设置到目前为止(不工作,IP和域路由到/www/155.155.155.101 – 他们不是分开的):

NameVirtualHost 155.155.155.100 NameVirtualHost 155.155.155.101 NameVirtualHost 155.155.155.102 NameVirtualHost 155.155.155.103 <VirtualHost 155.155.155.101> DocumentRoot /www/155.155.155.101 </VirtualHost> <VirtualHost 155.155.155.101> ServerName www.domain1.com ServerAlias www.domain1.com DocumentRoot /www/domain1.com </VirtualHost> 

我会很感激帮助!

未经testing。 我假设你的主机名是在一个IP上; 如果没有,则可以使用一个NameVirtualHost *来代替,并且在任何地方匹配<VirtualHost *>

 NameVirtualHost 155.155.155.100:80 NameVirtualHost 155.155.155.101:80 NameVirtualHost 155.155.155.102:80 NameVirtualHost 155.155.155.103:80 <VirtualHost 155.155.155.100:80> ServerName 155.155.155.100 DocumentRoot /www/155.155.155.100 </VirtualHost> <VirtualHost 155.155.155.100:80> ServerName www.domain0.com DocumentRoot /www/domain0.com </VirtualHost> <VirtualHost 155.155.155.101:80> ServerName 155.155.155.101 DocumentRoot /www/155.155.155.101 </VirtualHost> <VirtualHost 155.155.155.101:80> ServerName www.domain1.com DocumentRoot /www/domain1.com </VirtualHost> 

据我可以告诉你的错误是没有给第一个虚拟主机的ServerName。

Apache使用了接收请求的IP的反向,我期望的是www.domain1.com; 你的第二个虚拟主机因此被隐藏了。

问题是,你的第一个IP只节,

 <VirtualHost 155.155.155.101> DocumentRoot /www/155.155.155.101 </VirtualHost> 

不包含ServerNameServerAlias而跟在域名后面的则包含ServerName 。 Apache将尝试将传入的连接匹配到匹配的第一个VirtualHostconfiguration节。 由于使用parsing为IP的域的连接将与​​IP无匹配地进行匹配( ServerNameServerAlias ),因此用于处理连接。

因此,您应该确保每个VirtualHostconfiguration节都有一个ServerNameServerAlias选项以及DocumentRoot或者您应该确保在configuration文件中首先出现更具体的VirtualHostconfiguration节,然后才是较less特定的(即IP地址本身或没有ServerName选项。

因此,以下内容应按照您的预期运行:

 NameVirtualHost 155.155.155.100 NameVirtualHost 155.155.155.101 NameVirtualHost 155.155.155.102 NameVirtualHost 155.155.155.103 <VirtualHost 155.155.155.101> ServerName www.domain1.com ServerAlias www.domain1.com DocumentRoot /www/domain1.com </VirtualHost> <VirtualHost 155.155.155.101> DocumentRoot /www/155.155.155.101 </VirtualHost>