So I'm having difficultly getting HTTP/2 working with the newer version of the AWS Application Load Balancer, and Tomcat 9. I added the <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
to my connector on tomcat (the standard unencrypted 8080 connector). When I hit my site through the LB, I see the h2 protocol being used according to Chrome, but when I look at my access logs, it appears that everything is ultimately using 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>
I'm trying to make sure everything is functioning correctly, and from what I'm seeing I'm guessing the LB is just handling everything as h2, then converting it back to http 1.1 on the back end which obviously isn't exactly what I'm looking for.
Just to clarify, the LB is my TLS concentrator and the connections to my backend servers are unsecured.
ELB talks to a proxy on your ec2 instances in a beanstalk environment. with tomcat you get httpd. it looks like at this point there mod_http2 isn't supported / included in aws linux image.
if mod_http2 was present the needed config would look like this