Кажется, что nginx использует http2 random (почти всегда) и независимо от конфигурации
Я только что отлаживал сайт (с Lighthouse 3.2.0), для которого у меня был включен http/2 на прокси-сервере nginx (1.15.9 / official docker image) с
listen 443 ssl http2;
но Lighthouse по-прежнему сказал, что все ресурсы были загружены через http/1.1, когда я узнал, что почти все мои другие сайты, которые также доставляются через этот прокси-сервер nginx, проходят тест http2 (и фактически все ресурсы доставляются через h2
для этих сайтов).
Тем не менее, все их слушающие строфы определенно имеют только
listen 443 ssl;
и во всем конфиге есть только один сайт с http2
,
Так что же здесь может происходить? Меня больше интересует почему h2
Кажется, он включен, хотя я никогда не настраивал его, кроме одного сайта, который его не доставляет (возможно, это связано с тем, что на другой стороне proxy_pass
или что-то другое...).
Является http2
по умолчанию для новых версий nginx, независимо от прослушивания Я не мог найти ничего подобного в документах...
1 ответ
Обсудили здесь: https://stackoverflow.com/questions/40987592/can-i-enable-http-2-for-specific-server-blocks-virtual-hosts-only-on-nginx
Как правило, после включения HTTP/2 на одном listen
директива все они в одном ip / port получают HTTP/2. В теории SNI позволяет серверу видеть запрошенный виртуальный хост (по крайней мере, для клиентов с поддержкой SNI на TLSv1 или выше), а затем отвечать настройками ALPN, подходящими для этого виртуального хоста, но это сложно, и на практике большинство серверов этого не делают дифференцируйте этот способ и повторно используйте одинаковые настройки SSL/TLS на всех виртуальных хостах общего пользования на этом IP/ порте.
Я не могу объяснить, хотя, по крайней мере, без дополнительной информации, почему Маяк думал, что ваш HTTP/2 vhost был только HTTP/1.1.