Поэтому мне трудно заставить 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>