如何设置Apache虚拟主机与ipv6工作?

我有一个ipv4地址和几个ipv6地址的服务器。 一个域被redirect到ipv4一个logging我设置了这样的Apache ports.conf:

Listen ip.v4.address:80 NameVirtualHost ip.v4.address:80 

虚拟主机文件:

 <VirtualHost ip.v4.address:80> DocumentRoot /var/www/first/ ServerName first.domain ServerAlias www.first.domain ErrorLog ... CustomLog ... </VirtualHost> 

一切正常。

现在我想为第二个域创build新的虚拟主机与第二个IP。 我将第二个域redirect到ipv6 AAAAlogging,添加到ports.conf中:

 Listen [ip.v6.address]:80 NameVirtualHost [ip.v6.address]:80 

创build新的虚拟主机文件:

 <VirtualHost [ip.v6.address]:80> DocumentRoot /var/www/second/ ServerName second.domain ServerAlias www.second.domain ErrorLog ... CustomLog ... </VirtualHost> 

并重新启动Apache。 服务器启动时没有错误,但不起作用。 当我在浏览器中input第二个域时,找不到服务器。 当我input[ip.v6.address]网站显示。

任何帮助?

您的apacheconfiguration看起来是正确的,但是如果您希望通过IPv4和IPv6(双协议栈)都可以访问一个站点,那么它的复杂性要稍微高一点。

代替

 <VirtualHost ip.v4.address:80> ... </VirtualHost> <VirtualHost [ip.v6.address]:80> ... </VirtualHost> 

你可以做

 <VirtualHost ip.v4.address:80 [ip.v6.address]:80> ... </VirtualHost> 

这样,单个虚拟主机监听两个IP地址。 维护起来要容易得多!

如果你真的想在IPv6上有不同的网站,那么你的configuration当然是正确的。

这听起来像是一个IPv6名称parsing错误,而不是一个Apache错误。 检查名称是否正确地parsing到地址。

名称是否parsing为正确的IPv6地址? 这似乎是域parsing中的问题。