我有几个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>
不包含ServerName或ServerAlias而跟在域名后面的则包含ServerName 。 Apache将尝试将传入的连接匹配到匹配的第一个VirtualHostconfiguration节。 由于使用parsing为IP的域的连接将与IP无匹配地进行匹配( ServerName或ServerAlias ),因此用于处理连接。
因此,您应该确保每个VirtualHostconfiguration节都有一个ServerName或ServerAlias选项以及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>