Prérequis
Les exemples fournis se basent sur un site web utilisant le serveur web et tournant sous PHP.
Le système d’exploitation est une Ubuntu 18.04.
Est-ce compliqué à mettre en place ?
Oui et non. Tout dépend comment vous allez tirer le meilleur de ce protocole. Si vous voulez juste l’activer pour avoir les performances de base, c’est assez simple, si vous voulez le push, alors il va falloir réflèchir un peu à ce qui doit être envoyé au client par cette voie (et attention, le push peut apporter plus d’inconvénients que d’avantages).
Prérequis
Il vous faut impérativement le SSL, autrement dit, sans HTTPS, pas de HTTP/2 possible, car il nécessite TLS qui est au sein de HTTPS.
Si vous n’avez pas le budget, passer par Let’s encrypt pour avoir votre site servi en HTTPS gratuitement. Au passage, si vous appréciez leur service, envisagez de leur faire un don…
Enfin, je vais considérer dans cet article la mise en place de HTTP/2 pour un site en PHP 7.2 servi par Apache 2 sur une Ubuntu LTS 18.04. Si vous avez une autre configuration :
Il vous faut Apache version 2.4.24 au minimum, car c’est cette version d’apache qui supporte pour la première fois le protocole HTTP/2.
Vous devez utiliser le module PHP FPM, sinon, il sera impossible d’activer le protocole HTTP/2, même si vous le spécifiez en configuration, il restera sur le protocole HTTP/1.1.
Désinstallation des paquets non compatibles
sudo a2dismod php7.2
sudo a2dismod mpm_prefork
Installation des paquets compatibles
a2enmod http2
apt-get install php7.2-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.2-fpm
a2dismod php7.2
a2dismod mpm_prefork
a2enmod mpm_event
systemctl reload apache2
Ajout du protocole HTTP/2 sur un site
Il suffit d’ajouter cette ligne dans le fichier de configuration d’un
Virtual Host, par exemple juste après la ligne d’ouverture de la
balise <VirtualHost *:443>
:
Protocols h2 http/1.1
Et voilà, en principe, HTTP/2 sera disponible après un systemctl reload apache2
.
Pour vérifier cela, utilisez les Dev Tools disponibles sur les navigateurs
web Firefox ou Chrome.
Considérons avec Firefox l’exemple du chargement de la page Wikipedia sur le protocole HTTP2 :
Félicitation, comme le montre la colonne « Protocole », votre site est maintenant configuré pour servir du contenu en HTTP/2.0 !
Et pour nginx ?
Apparemment, dixit spout dans un post sur le forum Web Rank Info, c’est aussi simple que ça :
# changer ça
listen 443 ssl;
# par ça :
listen 443 ssl http2;