Isso provavelmente é sobre a única razão pela qual você usaria a antiga construção, atualmente.
O motivo pelo qual você está vendo isso é provavelmente que o padrão de ipv6only
foi alterado em nginx 1.3.4. Antes disso, o padrão era off
; nas versões mais recentes, o padrão é on
.
Isso acontece para interagir com a opção de soquete IPV6_V6ONLY no Linux e opções semelhantes em outros sistemas operacionais, cujos padrões não são necessariamente previsíveis. Assim, a primeira construção era necessária antes do 1.3.4 para garantir que você estivesse realmente ouvindo as conexões no IPv4 e no IPv6.
A alteração para o padrão nginx para ipv6only
garante que o padrão do sistema operacional para soquetes de pilha dupla seja irrelevante. Agora, o nginx se liga explicitamente ao IPv4, IPv6 ou ambos, nunca dependendo do SO para criar um soquete de pilha dupla por padrão.
De fato, minhas configurações padrão do nginx para o pré-1.3.4 têm a primeira configuração, e o pós-1.3.4 tem a segunda configuração.
No entanto, como ligar um soquete de pilha dupla é apenas para Linux, minhas configurações atuais agora parecem mais com o primeiro exemplo, mas sem ipv6only
set, a saber:
listen [::]:80;
listen 80;