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

bur*_*rsk 3 nginx ipv6 virtualhost ipv4

我正在使用 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

Mic*_*ton 7

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

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