Я успешно настроил Tomcat 8.5 и 9.x с Tomcat Native, HTTP и включил «UpgradeProtocol» на сервере. xml. При подключении к Tomcat через браузер с инструментами разработчика, я вижу, что протокол отображается как «h2». Я также вижу HTTP / 2, который используется в localhost_access_log («GET / HTTP / 2.0» 200). Отлично!
Наш стек приложений состоит из портала, ориентированного на пользователя, работающего на одном экземпляре Tomcat, и уровня веб-службы RESTful, работающего на другом экземпляре Tomcat [Пользователь -> (Портал) -> (Службы RESTful) - > (SDK)]. У меня есть портал и экземпляры REST Tomcat с HTTP / 2 и я проверил, что протокол «h2» используется через прямой браузер для любого экземпляра Tomcat (localhost_access_log подтверждает то же самое).
ПРОБЛЕМА: Я не могу заставить интерфейсный экземпляр "Portal" Tomcat общаться с внутренним "REST" экземпляром Tomcat через HTTP / 2. Внутренний экземпляр REST Tomcat всегда показывает «HTTP / 1.1» в качестве протокола, используемого в localhost_access_log (например, «GET / auth / validate / 56572121 HTTP / 1.1» 200). Когда Tomcat функционирует как «клиент», поддерживает ли он HTTP / 2? Мы что-то упускаем в наших конфигах Tomcat?
Я нашел эту статью, которая может оказаться полезной Как браузер узнает, поддерживает ли сайт HTTP / 2?
Огромная благодарность за любую помощь / совет! Спасибо!
Детали разъема Tomcat:
<Connector
port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
sslImplementationName="org.apache.tomcat.util.net.openssl.OpenSSLImplementation"
SSLEnabled="true"
scheme="https"
secure="true"
server="Unspecified"
xpoweredBy="false">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig
truststoreFile="${javax.net.ssl.trustStore}"
truststorePassword="${javax.net.ssl.trustStorePassword}"
ciphers="HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA"
sslProtocol="TLS"
protocols="+TLSv1.2,-TLSv1.1,-TLSv1,-SSLv3,-SSLv2Hello">
<Certificate
certificateKeystoreFile="${keystore.file}"
certificateKeystorePassword="${keystore.pass}"
certificateKeyPassword="${keystore.pass}"
certificateKeyAlias="${ssl.alias}"/>
</SSLHostConfig>
</Connector>