像我们许多人一样,我有一个 apache 服务器(2.2.15,加上补丁),上面有很多虚拟主机。可以肯定的是,我拥有的不仅仅是 IPv4 地址,这就是为什么我使用 NameVirtualHost 在同一个 IPv4 地址上运行许多地址。
我正忙于让我所做的一切都支持 IPv6。该服务器现在有一个路由 /64,这给了我大量的 v6 地址供我使用。我试图找到的是一种简单的方法来告诉每个 v4-NameVirtualHost 它也应该在唯一的 ipv6 地址上充当 VirtualHost。我真的,真的不想为每个虚拟主机定义两次。
有谁知道一种优雅的方式来做到这一点?或者做一些类似的事情,以防我在我的问题中嵌入任何危险的无知假设?
最简单的方法是不对您的 Apache 配置进行任何操作。
假设您使用了类似这样的指令
NameVirtualHost *
,<VirtualHost *:80>
然后 Apache 将回答它正在访问的任何地址上的任何虚拟主机Listen
(所有可能的地址,默认情况下)。如果您认为 Apache 不能接受任何可能的 IPv6 地址上的任何虚拟主机,那么您最终将不得不编辑您的
<VirtualHost>
条目,如@SanderSteffann 的回答所示。我认为这样的事情会起作用(免责声明:这是我的想法,我还没有测试过):