Comment activer HTTP/2 dans Apache sur Ubuntu

Depuis la création du World Wide Web (www), le protocole HTTP a évolué au fil des années pour fournir un contenu numérique sécurisé et rapide sur Internet.

La version la plus largement utilisée est HTTP 1.1, et bien qu’elle soit dotée d’améliorations de fonctionnalités et d’optimisations de performances pour pallier les lacunes des versions précédentes, elle manque de quelques autres caractéristiques saillantes qui ont été abordées par le HTTP/2.

Quelles sont les limitations de HTTP/1.1 ?

Le protocole HTTP/1.1 est confronté aux lacunes suivantes qui le rendent moins idéal, en particulier lors de l’exécution de serveurs Web à fort trafic :

  1. Des retards dans le chargement des pages Web en raison de longs en-têtes HTTP.
  2. HTTP/1.1 ne peut envoyer qu’une seule requête pour chaque fichier par connexion TCP.
  3. Étant donné que HTTP/1.1 traite une requête pour chaque connexion TCP, les navigateurs sont forcés d’envoyer un déluge de connexions TCP parallèles pour traiter simultanément les requêtes. Cela conduit à la congestion TCP et finalement au gaspillage de bande passante et à la dégradation du réseau.

Les problèmes mentionnés ci-dessus ont souvent conduit à une dégradation des performances et à des coûts généraux élevés en utilisation de bande passante. HTTP/2 est apparu pour résoudre ces problèmes et est maintenant l’avenir des protocoles HTTP.

Avantages de l’utilisation de HTTP/2

Il offre les avantages suivants :

  1. Compression des en-têtes qui minimise les requêtes des clients et réduit ainsi la consommation de bande passante. L’effet résultant est une vitesse de chargement des pages rapide.
  2. Le multiplexage de plusieurs requêtes sur une seule connexion TCP. Le serveur et le client peuvent décomposer une requête HTTP en plusieurs trames et les regrouper à l’autre extrémité.
  3. Des performances web plus rapides qui entraînent par conséquent un meilleur classement SEO.
  4. Une sécurité améliorée puisque la plupart des navigateurs principaux chargent HTTP/2 sur HTTPS.
  5. HTTP/2 est considéré comme plus adapté aux mobiles grâce à la fonction de compression d’en-tête.

Cela dit, nous allons activer HTTP/2 sur Apache sur Ubuntu 20.04 LTS et Ubuntu 18.04 LTS.

Prérequis :

Avant de commencer, assurez-vous d’activer HTTPS sur le serveur web Apache avant d’activer HTTP/2. Cela est dû au fait que tous les navigateurs web principaux prennent en charge HTTP/2 sur HTTPS. J’ai un nom de domaine pointant vers une instance sur Ubuntu 20.04 qui est en cours d’exécution du serveur Apache sécurisé à l’aide d’un certificat Let’s Encrypt.

De plus, il est recommandé d’avoir Apache 2.4.26 et les versions ultérieures pour les serveurs de production qui envisagent de passer à HTTP/2.

Pour vérifier la version de Apache que vous utilisez, exécutez la commande :

$ apache2 -v
Check Apache Version in Ubuntu

D’après la sortie, vous pouvez voir que nous utilisons la dernière version, qui est Apache 2.4.41 au moment de la rédaction de cet article.

Activer HTTP/2 sur un hôte virtuel Apache

Pour commencer, confirmez d’abord que le serveur Web exécute HTTP/1.1. Vous pouvez le faire sur un navigateur en ouvrant la section des outils de développement sur Google Chrome en utilisant la combinaison Ctrl + MAJ + I. Cliquez sur l’onglet ‘Réseau‘ et localisez la colonne ‘Protocole‘.

Confirm HTTP Protocol Version

Ensuite, activez le module HTTP/2 sur Ubuntu en exécutant la commande suivante.

$ sudo a2enmod http2
Enable HTTP/2 on Ubuntu

Ensuite, localisez et éditez votre fichier d’hôte virtuel SSL, si vous avez activé HTTPS en utilisant Let’s Encrypt, un nouveau fichier est créé avec un suffixe le-ssl.conf.

$ sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf

Insérez la directive ci-dessous après la balise <VirtualHost *:443>.

Protocols h2 http/1.1
Enable HTTP/2 on Apache

Pour sauvegarder les changements, redémarrez le serveur Web Apache.

$ sudo systemctl restart apache2

Pour vérifier si HTTP/2 est activé, récupérez les en-têtes HTTP en utilisant la commande curl suivante comme indiqué.

$ curl -I --http2 -s https://domain.com/ | grep HTTP
Check HTTP/2 Support in Apache

Vous devriez obtenir la sortie indiquée.

HTTP/2 200

Sur le navigateur, rechargez votre site. Puis retournez dans les outils de développement et confirmez que HTTP/2 est indiqué par l’étiquette h2 sur la colonne ‘Protocole‘.

Confirm HTTP/2 Protocol Version

Lors de l’utilisation du module mod_php avec Apache

Si vous utilisez Apache avec le module mod_php, vous devez passer à PHP-FPM. Cela est dû au fait que le module mod_php utilise le module MPM prefork qui n’est pas pris en charge par HTTP/2. Vous devez désinstaller le module MPM prefork et passer au module mpm_event qui sera pris en charge par HTTP/2.

Si vous utilisez le module PHP 7.4 mod_php, par exemple, désactivez-le comme indiqué:

$ sudo a2dismod php7.4 
Disable mod_php Module

Ensuite, désactivez le module MPM prefork.

$ sudo a2dismod mpm_prefork
Disable Prefork MPM in Apache

Après avoir désactivé les modules, activez le module Event MPM, les modules Fast_CGI, et setenvif comme indiqué.

$ sudo a2enmod mpm_event proxy_fcgi setenvif
Enable Event MPM in Apache

Installez PHP-FPM sur Ubuntu

Ensuite, installez et démarrez PHP-FPM comme indiqué.

$ sudo apt install php7.4-fpm 
$ sudo systemctl start php7.4-fpm

Ensuite, activez PHP-FPM pour qu’il démarre au démarrage.

$ sudo systemctl enable php7.4-fpm

Ensuite, activez PHP-FPM en tant que gestionnaire PHP d’Apache et redémarrez le serveur web Apache pour que les modifications prennent effet.

$ sudo a2enconf php7.4-fpm

Activer le support HTTP/2 dans Apache Ubuntu

Ensuite, activez le module HTTP/2 comme précédemment.

$ sudo a2enmod http2

Redémarrez Apache pour synchroniser tous les changements.

$ sudo systemctl restart apache2

Enfin, vous pouvez tester si votre serveur utilise le protocole HTTP/2 en utilisant la commande curl comme indiqué.

$ curl -I --http2 -s https://domain.com/ | grep HTTP
Check HTTP/2 Protocol in Apache

Vous pouvez également choisir d’utiliser les outils de développement sur le navigateur Google Chrome pour vérifier, comme précédemment documenté. Nous avons atteint la fin de ce guide. Nous espérons que vous avez trouvé les informations précieuses et que vous pouvez confortablement activer HTTP/2 sur Apache avec facilité.

Source:
https://www.tecmint.com/enable-http2-in-apache-on-ubuntu/