Activer http/2 avec Apache

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.

1) Version simple pour les chanceux

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 puissent techniquement être utilisé sans ssl. Il faudra donc que vos sites soient accessible en https. Cet article 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 :

  • Soit vous la mettez à l’intérieur de vos Virtual Host et seul ce Virtual Host sera en http/2
  • Soit vous la mettez à l’extérieur de vos Virtual Host et tout les sites du fichier de configuration seront en http/2
  • Soit vous la mettez dans le fichier de configuration général de Apache, situé dans /etc/apache2/apache2.conf, et tous vos sites seront en http/2

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.

2) Version moins simple pour les moins chanceux

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 la commande sudo aptitude install php7.0-fpm afin d’installer php-fpm. (ne pas lancer si vous n’utilisez pas PHP)
Ensuite on va activer le module Fastcgi nécessaire à php-fpm avec la commande sudo a2enmod proxy_fcgi setenvif (ne pas lancer si vous n’utilisez pas PHP)
Puis on active php-fpm avec la commande sudo a2enconf php7.0-fpm (ne pas lancer si vous n’utilisez pas PHP)
On désactive mod_php avec la commande sudo a2dismod php7.0 (ne pas lancer si vous n’utilisez pas PHP)
On désactive mpm_prefork avec la commande sudo a2dismod mpm_prefork
Et finalement on active mpm_event avec la commande sudo a2enmod mpm_event

Il ne reste plus qu’à redémarrer Apache avec la commande 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

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.