全局设置 ipv6only=off

whi*_*cko 7 nginx ipv6

由于更新我的 nginx 服务器只能通过 IPv6 而不是 IPv4,而我的配置包含

listen   [::]:80 default_server;
Run Code Online (Sandbox Code Playgroud)

现在我已将其更改为

listen   [::]:80 default_server ipv6only=off;
Run Code Online (Sandbox Code Playgroud)

并且服务器再次通过 IPv4 可用。这接缝是由于nginx 1.3.4 中的更改(“nginx 1.3.4 的更改”部分)

由于我在同一台机器上有多个服务器配置,我想ipv6only=off全局设置是否有可能这样做?

Mic*_*ton 10

我刚刚从 1.0 升级到 1.4。

由于实际上只有一个侦听器绑定到任何给定端口,因此ipv6only=off在您的任何一个listen指令中指定就足够了。

所以,在我的默认server块中,我有:

    listen [::]:80 ipv6only=off default_server;
Run Code Online (Sandbox Code Playgroud)

    listen [::]:443 ipv6only=off default_server;
Run Code Online (Sandbox Code Playgroud)

所有其他server块仅指定原始listen指令。它有效;任何虚拟主机都可以通过 IPv4 或 IPv6 访问。

您也可以将其添加到所有这些中,但这并不是真正必需的。将它添加到其中任何一个就足够了。

但是,由于该ipv6only=标志仅适用于Linux,因此我不再使用此构造。我当前的指令明确指定了 IPv4 和 IPv6,例如:

listen [::]:80 default_server;
listen 80 default_server;
Run Code Online (Sandbox Code Playgroud)