serveur_hebergement:apache2:activer_http_2_avec_apache

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.

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 :

  • 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 tous 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.

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 :

  • Installez php-fpm et libapache2-mod-fcgid
    sudo aptitude install php-fpm
  • Activez le module Fastcgi nécessaire à php-fpm
    sudo a2enmod proxy_fcgi setenvif
  • Activez php-fpm
    sudo a2enconf php7.x-fpm
  • Désactivez mod_php
    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

Vous pourriez laisser un commentaire si vous étiez connecté.
  • serveur_hebergement/apache2/activer_http_2_avec_apache.txt
  • Dernière modification : 2024/01/13 21:02
  • de fate