listen 443 ssl: змушує nginx слухати всі адреси ipv4 на сервері, на порту 443 ( 0.0.0.0:443)
поки
listen [::]:443 ssl: змушує nginx слухати всі адреси ipv6 на сервері, на порт 443 ( :::443)
[::]:443не змусить nginx відповідати на ipv4 за замовчуванням, якщо не вказати параметр ipv6only=off:
listen [::]:443 ipv6only=off;
Відповідно до документа: http://nginx.org/en/docs/http/ngx_http_core_module.html#listen
ssl:
Параметр ssl (0.7.14) дозволяє вказати, що всі з'єднання, прийняті на цьому порту, повинні працювати в режимі SSL.
http2:
Параметр http2 (1.9.5) налаштовує порт для прийому HTTP / 2 з'єднань.
Це не означає, що він приймає лише HTTP / 2 з'єднання.
Відповідно до RFC7540
Клієнт, який робить запит на URI "http" без попереднього знання про підтримку HTTP / 2 на наступному стрибку, використовує механізм оновлення HTTP. Клієнт робить це, роблячи запит HTTP / 1.1, який включає поле заголовка Оновлення з маркером "h2c".
Сервер, який не підтримує HTTP / 2, може відповісти на запит так, як ніби поле заголовка Оновлення відсутнє.
HTTP/1.1 200 OK
Content-Length: 243
Content-Type: text/html
Сервер, що підтримує HTTP / 2, приймає оновлення у відповідь 101 (протокол комутації). Після порожнього рядка, який завершує 101 відповідь, сервер може почати надсилати HTTP / 2 кадри.
Узагальнити :
Клієнт, який не підтримує HTTP / 2, ніколи не запитає сервер на оновлення зв'язку HTTP / 2: зв'язок між ними буде повністю HTTP1 / 1.
Клієнт, який підтримує HTTP / 2, попросить сервер (використовуючи HTTP1 / 1) для оновлення HTTP / 2:
- Якщо сервер готовий до HTTP / 2, то сервер помітить клієнта як такого: зв'язок між ними переключиться на HTTP / 2.
- Якщо сервер не готовий до HTTP / 2, сервер ігнорує запит на оновлення, відповідаючи на HTTP1 / 1: зв'язок між ними повинен залишатися достатньо HTTP1 / 1.
Можливо, більш резюме тут: http://qnimate.com/http2-compatibility-with-old-browsers-and-servers/
Однак nginx doc говорить про HTTP / 2 над TLS:
Зауважте, що для прийняття HTTP / 2 з'єднань через TLS потрібна підтримка розширення TLS "Протокол додатків рівня протоколу" (ALPN), яка доступна лише з OpenSSL версії 1.0.2.
Переконайтеся, що старі клієнти відповідають цій вимозі.