Recherche de site Web

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 toute la planète. l'Internet.

La version la plus largement utilisée est HTTP 1.1 et, même si elle contient des améliorations de fonctionnalités et des optimisations de performances pour remédier aux lacunes des versions précédentes, elle est en deçà de quelques autres fonctionnalités importantes qui ont été abordées par le HTTP/2.

Quelles sont les limites de HTTP/1.1 ?

Le protocole HTTP/1.1 présente les inconvénients suivants qui le rendent moins idéal, en particulier lors de l'exécution de serveurs Web à fort trafic :

  1. 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 obligés d'envoyer un déluge de connexions TCP parallèles pour traiter simultanément les requêtes. Cela conduit à une congestion TCP et, finalement, à un gaspillage de bande passante et à une dégradation du réseau.

Les problèmes mentionnés ci-dessus entraînaient souvent une dégradation des performances et des frais généraux élevés liés à l'utilisation de la bande passante. HTTP/2 est entré en scène pour résoudre ces problèmes et constitue désormais l'avenir des protocoles HTTP.

Avantages de l'utilisation de HTTP/2

Il offre les avantages suivants :

  1. Compression d'en-tête 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. 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 conduisent par conséquent à un meilleur classement SEO.
  4. Sécurité améliorée puisque la plupart des navigateurs grand public 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.

Conditions préalables:

Avant de commencer, assurez-vous d'activer HTTPS sur le serveur Web Apache avant d'activer HTTP/2. En effet, tous les navigateurs Web grand public prennent en charge HTTP/2 sur HTTPS. J'ai un nom de domaine pointé vers une instance sur Ubuntu 20.04 qui exécute un serveur Apache sécurisé à l'aide du certificat Let's Encrypt.

Il est également recommandé d'avoir Apache 2.4.26 et les versions ultérieures pour les serveurs de production ayant l'intention de passer à HTTP/2.

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

apache2 -v

À partir du résultat, 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, vérifiez 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 à l'aide de la combinaison Ctrl + MAJ + I. Cliquez sur l'onglet « Réseau » et localisez la colonne « Protocole ».

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

sudo a2enmod http2

Ensuite, localisez et modifiez votre fichier d'hôte virtuel SSL. Si vous avez activé HTTPS à l'aide de Let's Encrypt, un nouveau fichier est créé avec un le-ssl.conf suffixe.

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

Insérez la directive ci-dessous après la balise .

Protocols h2 http/1.1

Pour enregistrer les modifications, 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 à l'aide de la commande curl suivante comme show.

curl -I --http2 -s https://domain.com/ | grep HTTP

Vous devriez obtenir le résultat affiché.

HTTP/2 200

Sur le navigateur, rechargez votre site. Revenez ensuite aux outils de développement et confirmez HTTP/2 indiqué par l'étiquette h2 dans la colonne « Protocole ».

Lors de l'utilisation du module mod_php avec Apache

Si vous exécutez Apache avec le module mod_php, vous devez passer à PHP-FPM. En effet, le module mod_php utilise le module prefork MPM qui n'est pas pris en charge par HTTP/2. Vous devez désinstaller le préfork MPM 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 

Par la suite, désactivez le module préfork MPM.

sudo a2dismod mpm_prefork

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

sudo a2enmod mpm_event proxy_fcgi setenvif

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

Activez ensuite 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 soient appliquées.

sudo a2enconf php7.4-fpm

Activer la prise en charge HTTP/2 dans Apache Ubuntu

Activez ensuite le module HTTP/2 comme précédemment.

sudo a2enmod http2

Redémarrez Apache pour synchroniser toutes les modifications.

sudo systemctl restart apache2

Enfin, vous pouvez tester si votre serveur utilise le protocole HTTP/2 à l'aide de la commande curl comme indiqué.

curl -I --http2 -s https://domain.com/ | grep HTTP

Vous pouvez également choisir d'utiliser les outils de développement sur le navigateur Google Chrome pour vérifier comme indiqué précédemment. Nous sommes arrivés à la fin de ce guide. Nous espérons que vous avez trouvé les informations utiles et que vous pourrez facilement activer HTTP/2 sur Apache.