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 :
- Des retards dans le chargement des pages Web en raison de longs en-têtes HTTP.
- HTTP/1.1 ne peut envoyer qu’une seule requête pour chaque fichier par connexion TCP.
- É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 :
- 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.
- 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é.
- Des performances web plus rapides qui entraînent par conséquent un meilleur classement SEO.
- Une sécurité améliorée puisque la plupart des navigateurs principaux chargent HTTP/2 sur HTTPS.
- 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

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‘.

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

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

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

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‘.

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

Ensuite, désactivez le module MPM prefork.
$ sudo a2dismod mpm_prefork

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

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

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/