HTTP / 2 включен только на двух из трех сайтов.
HTTP / 2 попытается повторно использовать соединение для нескольких доменов, если оба IP-адреса совпадают, а сертификат охватывает все необходимые домены.Это именно тот случай, и поэтому HTTP / 2 используется повторно.
Однако если вы запускаете SSLLabs на всех трех доменах, вы видите небольшое различие в протоколе, используемом для Chrome (например):
Chrome 70 / Win 10 RSA 2048 (SHA256) TLS 1.2 > h2
Chrome 70 / Win 10 RSA 2048 (SHA256) TLS 1.2 > http/1.1
Chrome 70 / Win 10 RSA 2048 (SHA256) TLS 1.2 > h2
И, аналогично, далее в настройке ALPN:
ALPN Yes h2 http/1.1
ALPN Yes http/1.1
ALPN Yes h2 http/1.1
Таким образом, сначала будет работать переход к среднему домену, так как он будет подключаться через HTTP / 1.1 и не будет повторно использовать соединение.Однако переход к среднему домену после инициирования запроса к первому или последнему домену попытается повторно использовать соединение HTTP / 2 и завершится неудачей, поскольку средний домен не поддерживает HTTP / 2.
Веб-серверы должны вернуться421 Misdirected Request
код состояния для любых запросов, когда браузер пытается повторно использовать соединение, когда это не нужно, чтобы сказать: «Да, вы действительно не должны пытаться повторно использовать соединение здесь! Можете ли вы попробовать снована другом подключении, пожалуйста?То же самое происходит, если существуют разные настройки SSL / TLS (например, набор шифров, используемый для соединения, не принят в другом домене).
Chrome и Firefox правильно обрабатывают ответ 421
и прозрачно повторно отправляютзапросы через новое соединение, которое в этом случае использует HTTP / 1.1 (проверьте инструменты разработчика в браузере, и вы увидите, что это правда).Другие браузеры, в том числе Safari, используемый iOS, еще не реализовали поддержку относительно нового кода состояния 421 и поэтому не работают с ошибкой, как показано ниже:
Неверный запрос
Требуется клиентновое соединение для этого запроса, так как запрошенное имя хоста не соответствует указателю имени сервера (SNI), используемому для этого соединения.
Я предполагаю, что нет причин не включать HTTP / 2 на всехдомены а это была ошибка неправильной настройки?Если это так, включите HTTP / 2 во всех доменах, и ваша проблема должна быть решена.
Если вы не хотите использовать HTTP / 2 для всех доменов, то вы должны убедиться, что браузер не считает, что он может повторно использовать соединение.Это означает либо использование отдельного IP-адреса для этого домена, либо получение сертификата, переизданного только для двух доменов, и отдельного сертификата для другого, который не должен совместно использовать соединения.