Назад | Перейти на главную страницу

Как заставить 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, а подключения к моим внутренним серверам не защищены.

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>