Depuis quelques années maintenant est disponible le http/2, version améliorée du http (plus rapide, supportant l'envoi de requête multiple, etc). Debian Strech ayant les bonnes versions de Apache, Openssl, etc dans les dépôts stables pour pouvoir l'activer, ce qui n'était pas le cas avec Jessie, on va donc voir comment l'activer.
Tous d'abord il faut savoir que le http/2 ne peut être activé qu'en https. En effet, la majorité des navigateurs ne supportent le http/2 qu'en https, bien que le protocole puisse techniquement être utilisé sans ssl. Il faudra donc que vos sites soient accessibles en https. La page Let’s Encrypt, Certbot et SSL sur Debian traite de ce sujet.
Commencez par activer le module mod_http2 avec la commande
sudo a2enmod http2
.
Il faut maintenant ajouter la ligne
Protocols h2 http/1.1
dans vos fichiers de configuration Apache. Cette ligne indique que http/2 sera utilisé en priorité et s'il ne peut être utilisé on bascule sur le http. Vous avez plusieurs choix concernant cette ligne :
Redémarrez Apache avec la commande
sudo systemctl restart apache2
pour prendre en compte les modifications.
Rendez-vous sur le site https://tools.keycdn.com/http2-test pour tester si votre site est accessible en http/2. Si ça fonctionne, bravo, vous avez fini.
Si ça ne fonctionne pas, ce qui va arriver dans l'extrême majorité des cas sous Debian, il va falloir passer au chapitre 2.
Si lors du test, le site vous a répondu que le http/2 et alpn n'est pas disponible sur votre site, il va falloir faire quelques modifications. Si vous ouvrez le log Apache de votre site, vous trouverez cette ligne
The mpm module (prefork.c) is not supported by mod_http2.
Apache 2.4 fonctionne par défaut avec le module mpm_prefork, signifiant Multi-Processing Module, et ce module n'est pas compatible avec http/2 depuis la version 2.4.27 (c'est pas de bol…). Il va falloir qu'on le remplace par un autre. On va utiliser mpm_event à la place. Le seul hic, c'est que PHP, lorsqu'il est intégré à Apache via le module mod_php (ce qui est certainement le cas sur votre serveur web), a besoin du module mpm_prefork pour fonctionner. Il va donc également falloir qu'on remplace mod_php par php-fpm pour que PHP puisse interagir avec Apache. Avant de lancer toutes les commandes qu'il faut, si vous n'utilisez pas PHP, vous n'aurez que besoin de lancer les deux dernières commandes puis de redémarrer Apache.
Lancez les commandes suivantes uniquement si vous utilisez PHP :
sudo aptitude install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.x-fpm
sudo a2dismod php7.x
Désactivez mpm_prefork
sudo a2dismod mpm_prefork
Activez mpm_event
sudo a2enmod mpm_event
Il ne reste plus qu'à redémarrer Apache
sudo systemctl restart apache2
. Si vous retournez sur le site https://tools.keycdn.com/http2-test vous devriez voir le http/2 actif.
Source : https://http2.pro/doc/Apache