如何设置Apache VirtualHost与ipv6一起使用?


10

我的服务器具有1个ipv4地址和一些ipv6地址。一个域重定向到ipv4 A记录,我像这样设置apache ports.conf:

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

和virtualhost文件:

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

而且一切正常。

现在,我想使用第二个IP为第二个域创建新的virtualhost。我将第二个域重定向到ipv6 AAAA记录,添加到ports.conf:

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

创建新的虚拟主机文件:

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

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

有什么帮助吗?


感谢大家的帮助。IPv6是正确的,我需要两个不同的站点。我联系了我的域名提供商,并在其中设置了此AAAA记录。他们说可能需要24小时才能设置好,也许这就是问题所在。设置A唱片时,效果几乎是立竿见影的,我认为AAAA的工作方式相同。
谢尔迪

如果您将自己喜欢的答案标记为这样,那会很好,以便尝试帮助您的人获得一些奖励;-)
Sander Steffann 2011年

Answers:


12

您的apache配置看起来正确,但是要使一个站点同时通过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上使用其他站点,那么您的配置当然是正确的。


2
也许<VirtualHost *:80>?
Koos van den Hout

2
当然也可以,但是由于他在示例中明确指定了IP地址,所以我也这样做了。如果您不太在意IP地址,而只想通过Host:标头完成所有操作,那么您的解决方案就容易得多。不过请注意SSL / TLS网站。您需要确保服务器名称指示(TLS / SNI)适用于您的用户群。
桑德·斯特凡2011年

4

这听起来像是IPv6名称解析错误,而不是Apache错误。检查名称是否正确解析为地址。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.