К сожалению, при настройке поддержки IPv6 в nginx на ОС Linux можно столкнуться с неочевидностью настройки. Скажем, тот факт, что директива “listen 80” означает лишь порт 80 IPv4, мало кого способен обрадовать. Поддержка IPv6 достигается за счёт комбинирования двух директив listen в рамках каждого виртуального узла. При этом в настройках виртуального узла по умолчанию, как оказалось, нужно писать одно, а в настройках остальных виртуальных узлов — немного другое.
# для виртуального узла по умолчанию listen 80 default_server; listen [::]:80 default ipv6only=on;
# для остальных виртуальных узлов listen 80; listen [::]:80;
Этого же можно добиться, установив ядерную опцию net.ipv6.bindv6only в значение 1 и настроив сервер уже более очевидным образом.

Простите, а разве не это написано в официальной документации Игоря? Пора читать внимательнее.
Может быть и описано, а может быть и не было написано на момент написания этой статьи (а было это довольно давно), да и статья несёт справочный характер, так как вопрос об IPv6 мне приходилось слышать от друзей и коллег как минимум дважды. Большая часть статей по администрированию на этом сайте нацелена на то, чтобы простым образом описать готовые решения различных проблем и ссылаться на эти статьи в качестве ответа на вопросы.