IPv6 特殊注意事项
越来越多的平台实现了 IPv6,并且 APR 在大多数这些平台上支持 IPv6,允许 httpd 分配 IPv6 套接字,并处理通过 IPv6 发送的请求。
httpd 管理员面临的一个复杂因素是 IPv6 套接字是否可以同时处理 IPv4 连接和 IPv6 连接。使用 IPv6 套接字处理 IPv4 连接使用 IPv4 映射的 IPv6 地址,这些地址在大多数平台上默认允许,但在 FreeBSD、NetBSD 和 OpenBSD 上默认不允许,以匹配这些平台上的系统范围策略。在默认情况下不允许的系统上,可以使用特殊的 configure 参数更改 httpd 的此行为。
另一方面,在某些平台(如 Linux 和 Tru64)上,唯一处理 IPv6 和 IPv4 的方法是使用映射地址。如果您希望 httpd 使用最少的套接字处理 IPv4 和 IPv6 连接,这需要使用 IPv4 映射的 IPv6 地址,请指定 --enable-v4-mapped configure 选项。
--enable-v4-mapped 是除 FreeBSD、NetBSD 和 OpenBSD 之外的所有平台上的默认值,因此这可能是您的 httpd 的构建方式。
如果您希望 httpd 仅处理 IPv4 连接,而不管您的平台和 APR 将支持什么,请在所有 Listen 指令上指定 IPv4 地址,如下例所示
Listen 0.0.0.0:80
Listen 192.0.2.1:80
如果您的平台支持,并且您希望 httpd 在单独的套接字上处理 IPv4 和 IPv6 连接(即禁用 IPv4 映射地址),请指定 --disable-v4-mapped configure 选项。--disable-v4-mapped 是 FreeBSD、NetBSD 和 OpenBSD 上的默认值。