Вероятно, это единственная причина, по которой вы бы использовали прежнюю конструкцию в наши дни.
Причина, по которой вы видите это, вероятно , заключается в том, что значение по умолчанию ipv6only
изменилось в nginx 1.3.4. До этого он по умолчанию off
; в новых версиях по умолчанию on
.
Это происходит во взаимодействии с опцией сокета IPV6_V6ONLY в Linux и аналогичными опциями в других операционных системах, значения по умолчанию которых не всегда предсказуемы. Таким образом, прежняя конструкция требовалась до 1.3.4, чтобы убедиться, что вы действительно прослушиваете соединения как на IPv4, так и на IPv6.
Изменение по умолчанию для nginx ipv6only
гарантирует, что значение по умолчанию для операционной системы для сокетов с двумя стеками не имеет значения. Теперь nginx либо явно привязывается к IPv4, IPv6, либо к обоим, независимо от того, какая ОС по умолчанию создает сокет с двумя стеками.
Действительно, мои стандартные конфигурации nginx для версии до 1.3.4 имеют первую конфигурацию, а все версии после 1.3.4 имеют вторую конфигурацию.
Хотя, поскольку привязка сокета с двумя стеками - это только для Linux, мои текущие конфигурации теперь больше похожи на первый пример, но без ipv6only
набора:
listen [::]:80;
listen 80;