如何设置 apache 虚拟主机以与 ipv6 一起工作?

如何设置 apache 虚拟主机以与 ipv6 一起工作?

我的服务器有 1 个 ipv4 地址和几个 ipv6 地址。一个域名重定向到 ipv4 A 记录,我像这样设置了 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>

一切正常。

现在我想为第二个域创建新的虚拟主机,并使用第二个 IP。我将第二个域重定向到 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]网站时,显示出来。

有什么帮助吗?

答案1

您的 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

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

答案3

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

相关内容