Поддержка сервера / клиента Tomcat 8.5 / 9.x HTTP / 2 - PullRequest
0 голосов
/ 13 февраля 2020

Я успешно настроил 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>
...