HTTP/2 avec Apache httpd

  • Activer le module mod_http2

LoadModule http2_module modules/mod_http2.so
  • Activer TLS / SSL

Voici un exemple minimal de configuration d’un VirtualHost HTTPS avec HTTP/2 activé :

LoadModule ssl_module modules/mod_ssl.so
LoadModule http2_module modules/mod_http2.so

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private.key

    Protocols http/1.1
</VirtualHost>
  • Activer le protocole HTTP/2

<VirtualHost *:443>
    ...
    Protocols h2 http/1.1
</VirtualHost>

Cette directive peut être placée au niveau global ou dans un VirtualHost SSL.

Remarques importantes

  • MPM requis : mod_http2 ne fonctionne pas correctement avec le MPM prefork. Il faut utiliser le MPM event (recommandé) ou worker.

  • HTTP/2 en clair (h2c) : Pour utiliser HTTP/2 sans TLS (non recommandé en production), on peut spécifier h2c à la place de h2. Ça nécessite que le client puisse faire une mise à niveau (upgrade) depuis HTTP/1.1.

    Protocols h2c http/1.1
  • Disponibilité et stabilité : HTTP/2 est disponible depuis Apache 2.4.17. Si mod_http2 était expérimental dans cette version, il est désormais stable dans les versions 2.4 récentes.