我尝试仅允许某个文件夹上的本地主机,它可以完美地与 ipv4 ( Allow from 127.0.0.1
) 配合使用,但是一旦我添加 ipv6 ( Allow from [::1]
),我的 Apache 将无法再启动。
我检查了一下error.log
,上面写着:
指定的 IP 地址无效。
我已经输入了没有压缩格式的 ipv6 地址,但还是不起作用。
我正在使用 Apache 2.2.25、Windows 8.1。我的计算机上启用了 IPv6。
答案1
用括号括住 IPv6 地址的表示法仅用于地址和可选端口号之间可能混淆的情况。
其中一个例子是Listen
指令。因为它可以同时指定地址和端口,所以必须添加括号以避免混淆:Listen 2001:db8::1:8080
是无效的,因为它可以同时表示Listen [2001:db8::1]:8080
和Listen [2001:db8::1:8080]
。括号使其明确。
为了Allow from
指令则不然。指定地址时,它始终是没有端口号的地址。因此Allow from 2001:db8::1:8080
永远不会产生歧义。它始终是 IPv6 地址2001:db8::1:8080
。
如果省略括号 ( Allow from ::1
) 它应该可以工作。
答案2
您的虚拟主机将像这样定义<VirtualHost *:80>
,允许 ipv4 和 ipv6 访问。
此外,Apache 文档对 IPv6 限制使用以下格式:
Allow from 2001:db8::a00:20ff:fea7:ccea
Apache 文档