1

I am currently trying to enable http2 for a project. The system is running on Ubuntu 16.04 on AWS behind an ELB with proxy_protocol enabled. The site is running SSL only with Apache 2.4 from ppa:ondrej/apache2 in mpm_event mode and a tomcat 7 as the backend. The vhost config is:

<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>

The "normal" GET/POST requests work fine if we enable http2, just a file upload causes a message like this in the logs with a 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: 

i did some stracing and the request is not event send to the tomcat, it gets stuck in apache. The Proxy Protocol headers also look ok, so i am also confused by the first message.

Does somebody have an idea whats going on here :)?

SebMel
  • 13
  • 1
  • 3

1 Answers1

0

Looks like a bug in mod_proxy_protocol. It is not compatible with mod_http2 at present.

See this bug for more details: https://github.com/roadrunner2/mod-proxy-protocol/issues/6

Barry Pollard
  • 4,591
  • 15
  • 26
  • appears to have been [fixed on 2018-03-19](https://github.com/roadrunner2/mod-proxy-protocol/issues/6#issuecomment-374187833) – A.B Jun 02 '18 at 14:24