如何在 nginx 1.4 上使用虚拟主机实现双栈 IPv4/IPv6

如何在 nginx 1.4 上使用虚拟主机实现双栈 IPv4/IPv6

我正在使用 nginx 1.4.1(现在,之前是 1.2.1),并希望支持双栈(IPv4 和 IPv6)。我总是收到duplicate listen options for xyz来自 nginx 的错误。

server {
    listen 80 default_server;
    listen [::]:80 ipv6only=on default_server;
    server_name domain1;
}
server {
    listen 443 ssl default_server;
    listen [::]:443 ssl ipv6only=on default_server;
    server_name domain1;
}

server {
    listen 80;
    listen [::]:80 ipv6only=on;
    server_name domain2;
}
server {
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;
    server_name domain2;
}

如果我仅使用,listen 80则只会获得 IPv4。否则,如果我使用,listen [::]:80则只会获得 IPv6。

如何设置 nginx 1.4.x 以支持虚拟主机双栈?

答案1

default_server您已在多个块中使用server。这仅用于定义给定 IP 地址/端口组合的默认虚拟主机。因此,它应该在整个配置中每个 IP/端口对只出现一次。哪个主机应该是默认虚拟主机由您决定。(或者您已经这样做了,直到您编辑掉这部分。)

此外,ipv6only在整个配置中只能出现一次。由于 1.4 及更高版本中的默认值为on,因此您可以放心地将其完全省略。

相关内容