我有几个 IP 正在尝试在 Apache2 中配置。我尝试搜索,但似乎我要求的太多了。
我想为每个 IP 路由每个直接请求(例如http://155.155.155.100) 到专用的 DocumentRoot(例如 /www/155.155.155.00/)。
而解析到相同 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>
我将非常感激您的帮助!
答案1
未经测试。我假设您的每个主机名都位于单个 IP 上;如果不是,您可以改用单个 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;因此您的第二个虚拟主机被隐藏了。
答案2
问题是你的第一个 IP 唯一的节,
<VirtualHost 155.155.155.101>
DocumentRoot /www/155.155.155.101
</VirtualHost>
不包含ServerName
或 ,ServerAlias
而后面带有域的配置节包含 或 。Apache 将尝试将传入连接与VirtualHost
匹配的第一个配置节进行匹配。由于使用解析为 IP 的域的连接将匹配 IP 而无需进一步细化(ServerName
或ServerAlias
),因此它用于处理连接。
因此,您应当确保每个VirtualHost
配置节都有一个ServerName
或ServerAlias
选项,以及DocumentRoot
或者,您应当确保更具体的VirtualHost
配置节首先出现在配置文件中,然后是较不具体的配置节(即,带或不带选项的 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>