和我们许多人一样,我有一个 Apache 服务器(2.2.15,加上补丁),上面有很多虚拟主机。当然,我的 IPv4 地址比 IPv4 地址还多,这就是为什么我使用 NameVirtualHost 在同一个 IPv4 地址上运行许多虚拟主机。
我正忙着让我所做的一切都启用 IPv6。此服务器现在有一个路由 /64,这给了我一个可怕很多 v6 地址需要处理。我试图找到一种简单的方法来告诉每个 v4-NameVirtualHost,它还应该在唯一的 ipv6 地址上充当 VirtualHost。我真的不想对每个虚拟主机进行两次定义。
有人知道一种优雅的方法来做到这一点吗?或者做一些类似的事情,以防我在问题中嵌入任何危险的无知假设?
答案1
我认为这样的事情会起作用(免责声明:这是我的想法,我还没有测试过):
NameVirtualHost 10.0.0.1:80
<VirtualHost 10.0.0.1:80 [2001:db8::1]:80>
ServerName blabla
...
</VirtualHost>
<VirtualHost 10.0.0.1:80 [2001:db8::2]:80>
ServerName blabla2
...
</VirtualHost>
etc...
答案2
简单的方法是不要对 Apache 配置进行任何操作。
假设您使用了类似的指令NameVirtualHost *
,<VirtualHost *:80>
那么 Apache 将负责其所连接的任何地址上的任何虚拟主机Listen
(默认情况下是所有可能的地址)。
如果你认为 Apache 不能接受任何可能的 IPv6 地址上的任何虚拟主机,那么你最终将不得不编辑你的<VirtualHost>
条目,如下所示@SanderSteffann 的回答。