Как заставить HTTP/2 работать с AWS ALB и Tomcat 9

Таким образом, у меня трудно заставить HTTP/2 работать с более новой версией AWS Application Load Balancer и Tomcat 9. Я добавил <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> на мой разъем на tomcat (стандартный незашифрованный 8080 разъем). Когда я захожу на свой сайт через LB, я вижу протокол h2, используемый в соответствии с Chrome, но когда я просматриваю свои журналы доступа, кажется, что в конечном итоге все использует HTTP1.1 10.0.3.103 - - [04/Nov/2016:01:23:47 +0000] "GET /login.html HTTP/1.1" 200 4916

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    </Connector>

Я пытаюсь убедиться, что все работает правильно, и из того, что я вижу, я предполагаю, что LB просто обрабатывает все как h2, а затем преобразует его обратно в http 1.1 на серверной части, что, очевидно, не совсем то, что Я ищу.

Просто чтобы уточнить, LB - это мой концентратор TLS, и соединения с моими внутренними серверами не защищены.

1 ответ

ELB общается с прокси на ваших экземплярах ec2 в среде beanstalk. с tomcat вы получаете httpd. похоже, что в этот момент mod_http2 не поддерживается / не включен в образ aws linux.

если присутствует mod_http2, необходимая конфигурация будет выглядеть так

LoadModule http2_module modules/mod_http2.so

<IfModule http2_module>
    LogLevel http2:info
</IfModule>
Другие вопросы по тегам