Назад | Перейти на главную страницу

nginx, похоже, использует случайный http2 (почти всегда) и независимо от конфигурации

Я только что отлаживал сайт (с Lighthouse 3.2.0), для которого у меня был включен http / 2 на прокси-сервере nginx (1.15.9 / официальный образ докера) с

listen 443 ssl http2;

но Lighthouse по-прежнему сказал, что все ресурсы были загружены через http / 1.1, когда я обнаружил, что почти все мои другие сайты, которые также доставляются через этот прокси-сервер nginx, проходят тест http2 (и на самом деле все ресурсы доставляются через h2 для этих сайтов).

Однако все их строфы для прослушивания определенно содержат только

listen 443 ssl;

и во всем конфиге только один сайт с http2.

Так что же здесь может происходить? Меня больше интересует почему h2 кажется, что он включен, хотя я никогда не настраивал его, кроме одного сайта, который его не доставляет (возможно, это связано с тем, что на другой стороне есть node.js proxy_pass или что-то другое...).
Является http2 по умолчанию для новых версий nginx независимо от строфы прослушивания? Ничего подобного в документации не нашел ...

Обсуждается здесь: https://stackoverflow.com/questions/40987592/can-i-enable-http-2-for-specific-server-blocks-virtual-hosts-only-on-nginx

Обычно, когда вы включаете HTTP / 2 на одном listen директива, все они в одном и том же ip / порту получают HTTP / 2. Теоретически SNI позволит серверу видеть запрошенный виртуальный хост (по крайней мере, для клиентов с поддержкой SNI на TLSv1 или выше), а затем отвечать настройками ALPN, соответствующими этому виртуальному хосту, но это сложно, и на практике большинство серверов не дифференцируйте этот способ и повторно используйте одни и те же настройки SSL / TLS на всех общих виртуальных хостах на этом IP / порту.

Я не могу объяснить, по крайней мере, без дополнительной информации, почему Lighthouse решил, что ваш виртуальный хост HTTP / 2 был только HTTP / 1.1.