为什么这个 IPv6 监听指令不接受 IPv4?

为什么这个 IPv6 监听指令不接受 IPv4?

在 Ubuntu 12.04 上的 nginx(1.4.2)设置中,我只设置了配置文件(我删除/禁用了其他文件):

server {
  listen [::]:80 default_server;

  location / {
    root /home/lwood/websites/default/public;
  }
}

我已经重新启动了 nginx。

为什么 nginx 不接受 IPv4 连接?请参阅文档

http://wiki.nginx.org/HttpCoreModule#listen

他们提到

在 Linux 中,默认情况下任何 IPv6 TCP 套接字也接受 IPv4 流量...运行时参数:net.ipv6.bindv6only 的默认值为 0。

我已经检查过sysctl,bindv6only 确实设置为 0。所以我的 IPv6 监听指令也应该接受 IPv4,对吗?

我肯定误解了文档。如能解释一下我将不胜感激。

答案1

维基百科已过时。如实际的文档,从 nginx 1.3.4 开始,默认为ipv6onlyon如果省略该参数,则 nginx 将仅绑定到 IPv6。操作系统设置永远不会使用。

相关内容