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
  <Location />
    Require all granted

  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/


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 (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 :)?


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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.