Comment activer HTTP2 sur un serveur web Apache

Qu’est ce que le HTTP ?

Le HTTP (Hyper Text Transfer Protocol) est un protocole de communication client-serveur développé pour le web.
Il a été inventé en 1990 par Tim Berners-Lee pour le World Wide Web.
Le HTTPS est une variante sécurisée du protocole HTTP utilisant des protocoles SSL ou TLS.

Le HTTP2

Le HTTP 2 est une évolution de HTTP (la dernière version était la 1.1).
Pour comprendre les avantages du HTTP2 voici un rappel du fonctionnement de l’affichage d’une page web :
L’affichage d’une page web se fait en plusieurs étapes :
– Une requête est effectuée par le client (navigateur web)
– Le serveur envoie un fichier HTML en réponse
– Le client analyse ce fichier et effectue d’autres requêtes vers le serveur en fonction des ressources nécessaires pour afficher la page comme par exemple une feuille de style CSS des images
Chaque requête correspond à une connexion avec le serveur. On a donc plusieurs connexions pour l’affichage d’une page web classique.

Le HTTP2 apporte quelques évolutions :

Multiplexing

Le multiplexage permet de faire transiter plusieurs informations par connexion.

Push des ressources

Le protocole HTTP2 permet au serveur d’analyser la page HTML demandée afin de déterminer de quelles autres ressources le client aura besoin et lui envoyer en même temps que cette page HTML.

Compression

La compression des données permet de réduire la bande passante et donc améliorer la vitesse d’affichage.

Activation du HTTP2 sur un serveur Apache

Le module HTTP2 d’Apache est incompatible avec le module multi processus (MPM) prefork. Ce module peut être remplacé par le MPM event.
Le module php7.0 étant dépendant du MPM prefork, il faut utiliser un module PHP indépendant à la place ( php-fpm) ainsi que le module proxy_fcgi qui lui permet de communiquer avec Apache.
Installation et activation de php7.0-fpm et proxy_fcgi

sudo apt-get install php7.0-fpm
sudo a2enmod proxy_fcgi
sudo a2enconf php7.0-fpm

Désactivation de php7.0

sudo a2dismod php7.0

Désactivation de mpm_prefork

sudo a2dismod mpm_prefork

Activation de mpm_event

sudo a2enmod mpm_event

Ajout d’une directive à un virtual host pour prendre en charge HTTP2
La directive peut être ajoutée au fichier global de configuration d’Apache /etc/apache2/apache2.conf

Protocols h2 http/1.1

Redémarrage d’Apache
sudo service apache2 restart

le HTTP2 de votre serveur peut être testé à cette adresse :
https://tools.keycdn.com/http2-test