Parece um bug no mod_proxy_protocol. Não é compatível com o mod_http2 no momento.
Veja este bug para mais detalhes: link
No momento, estou tentando ativar o http2 para um projeto. O sistema está rodando no Ubuntu 16.04 na AWS por trás de um ELB com o proxy_protocol ativado. O site está executando SSL apenas com o Apache 2.4 do ppa: ondrej / apache2 no modo mpm_event e um tomcat 7 como backend. A configuração do vhost é:
<VirtualHost *:443>
ProxyProtocol On
ServerName myhostname
DocumentRoot /var/www/html/
<Directory /var/www/html/>
Options +FollowSymLinks -Indexes
AllowOverride None
Require all granted
</Directory>
<Location />
Require all granted
</Location>
Header always set Strict-Transport-Security "max-age=86400"
RequestHeader set X-Forwarded-Proto https
SSLEngine On
SSLCertificateFile mycrt
SSLCertificateKeyFile mykey
ProxyTimeout 1800
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
As solicitações "normais" de GET / POST funcionam bem se habilitarmos http2, apenas o upload de um arquivo causa uma mensagem como essa nos registros com um 400 Bad Request for the Client:
[proxy_protocol:error] [client ] ProxyProtocol: no valid header found
[proxy_http:error] (103)Software caused connection abort: [client ] AH01095: prefetch request body failed to 127.0.0.1:8080 (localhost) from 10.X (), referer:
eu fiz algumas stracing e o pedido não é envio de evento para o tomcat, ele fica preso no apache. Os cabeçalhos do Proxy Protocol também parecem ok, então eu também estou confuso com a primeira mensagem.
Alguém tem uma ideia do que está acontecendo aqui:)?
Parece um bug no mod_proxy_protocol. Não é compatível com o mod_http2 no momento.
Veja este bug para mais detalhes: link
Tags apache-2.4 mod-proxy http2