Esa es probablemente la única razón por la que usaría la construcción anterior, en estos días.
La razón por la que está viendo esto es probablemente porque el valor predeterminado de ipv6only
cambiado en nginx 1.3.4. Antes de eso, el valor predeterminado era off
; en versiones más nuevas por defecto on
.
Esto sucede para interactuar con la opción de socket IPV6_V6ONLY en Linux y opciones similares en otros sistemas operativos, cuyos valores predeterminados no son necesariamente predecibles. Por lo tanto, la construcción anterior se requería antes de 1.3.4 para garantizar que realmente estaba escuchando conexiones tanto en IPv4 como en IPv6.
El cambio al valor predeterminado de nginx ipv6only
garantiza que el valor predeterminado del sistema operativo para los sockets de doble pila es irrelevante. Ahora, nginx se vincula explícitamente a IPv4, IPv6 o ambos, y nunca depende del sistema operativo para crear un socket de doble pila de forma predeterminada.
De hecho, mis configuraciones nginx estándar para pre-1.3.4 tienen la primera configuración, y después de 1.3.4 tienen la segunda configuración.
Sin embargo, dado que vincular un socket de doble pila es algo exclusivo de Linux, mis configuraciones actuales ahora se parecen más al primer ejemplo, pero sin ipv6only
establecer, a saber:
listen [::]:80;
listen 80;