由于更新我的 nginx 服务器只能通过 IPv6 而不能通过 IPv4 使用,而我的配置包含
listen [::]:80 default_server;
现在我把它改成了
listen [::]:80 default_server ipv6only=off;
并且服务器可以再次通过 IPv4 访问。这个接缝是由于 nginx 1.3.4 的变化(“nginx 1.3.4 的变化”部分)。
由于我在同一台机器上有多个服务器配置,我想ipv6only=off
全局设置是否有可能这样做?
我刚刚通过从 1.0 升级到 1.4 来完成这个过程。
由于实际上只有一个侦听器绑定到任何给定端口,因此
ipv6only=off
在您的任何一个listen
指令中指定就足够了。所以,在我的默认
server
块中,我有:和
所有其他
server
块仅指定原始listen
指令。它有效;任何虚拟主机都可以通过 IPv4 或 IPv6 访问。您也可以将它添加到所有这些,但这并不是真正需要的。将其添加到其中任何一个就足够了。
但是,因为该
ipv6only=
标志仅适用于 Linux,所以我不再使用此构造。我当前的指令明确指定了 IPv4 和 IPv6,例如:@Michael Hampton 的答案(但你必须触摸所有文件)的替代方法是插入
对于所有服务器。
奇怪的是,插入
listen [::]:80 ipv6only=off
多个服务器会导致listen 80;
和的混合ipv6only=off
(在不同的服务器中)导致