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

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

 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来支持虚拟主机双栈?

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

而且, ipv6only只能在整个configuration中出现一次。 由于1.4及更高版本的默认值已on ,因此可以完全忽略它。