如何设置 apache 虚拟主机以使用 ipv6?

she*_*ldy 12 ipv6 virtualhost apache-2.2

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

Listen ip.v4.address:80
NameVirtualHost ip.v4.address:80
Run Code Online (Sandbox Code Playgroud)

和虚拟主机文件:

<VirtualHost ip.v4.address:80>
DocumentRoot /var/www/first/
ServerName first.domain
ServerAlias www.first.domain
ErrorLog ...
CustomLog ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

一切正常。

现在我想用第二个 ip 为第二个域创建新的虚拟主机。我将第二个域重定向到 ipv6 AAAA 记录,添加到 ports.conf:

Listen [ip.v6.address]:80
NameVirtualHost [ip.v6.address]:80
Run Code Online (Sandbox Code Playgroud)

创建新的虚拟主机文件:

<VirtualHost [ip.v6.address]:80>
DocumentRoot /var/www/second/
ServerName second.domain
ServerAlias www.second.domain
ErrorLog ...
CustomLog ...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

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

有什么帮助吗?

San*_*ann 15

您的 apache 配置看起来正确,但如果您希望通过 IPv4 和 IPv6(双堆栈)访问一个站点,则比它需要的要复杂一些。

代替

<VirtualHost ip.v4.address:80>
...
</VirtualHost>

<VirtualHost [ip.v6.address]:80>
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

你可以做

<VirtualHost ip.v4.address:80 [ip.v6.address]:80>
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这样,单个虚拟主机就可以侦听两个 IP 地址。维护起来容易多了!

如果您真的想要一个不同的 IPv6 站点,那么您的配置当然是正确的。

  • 或者也许 &lt;VirtualHost *:80&gt; ? (2认同)
  • 这当然也可以工作,但由于他在他的示例中明确指定了 IP 地址,我也这样做了。如果您并不真正关心 IP 地址,而只想通过 Host: 标头执行所有操作,那么您的解决方案要容易得多。不过要注意 SSL/TLS 站点。您需要确保服务器名称指示 (TLS/SNI) 适用于您的用户群。 (2认同)

Mar*_*lka 3

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