Retour au blog

Comment activer HTTP/2 (et HTTP/3) : Nginx, Apache, CDN

2025-08-139 min de lecture

Vous voulez des chargements plus rapides ? Activez HTTP/2 et, si possible, HTTP/3. Ce guide montre comment activer les deux sur Nginx, Apache et les CDN courants, comment vérifier qu'ils fonctionnent et des correctifs rapides s'ils ne fonctionnent pas.

Pourquoi HTTP/2 (et HTTP/3) ?

HTTP/1.1 ouvre plusieurs connexions et répète les en-têtes. HTTP/2 multiplexe les requêtes sur une seule connexion et compresse les en-têtes. HTTP/3 ajoute QUIC sur UDP pour éviter le blocage au niveau du transport. Résultat : des chargements plus rapides, surtout sur mobile et les liaisons à latence élevée.

Vérifications rapides : sont-ils activés ?

  • DevTools : Onglet Réseau > ajouter la colonne "Protocole". Recherchez h2 ou h3.
  • CLI : curl -I --http2 https://example.com
  • HTTP/3 : curl -I --http3 https://example.com (curl récent)
  • Waterfalls : De nombreux fichiers devraient commencer ensemble sur une seule connexion.

Nginx : activer HTTP/2 (et HTTP/3)

server {
   # HTTP/2
   listen 443 ssl http2;
   listen [::]:443 ssl http2;

   # Décommentez si votre build prend en charge QUIC
   # listen 443 quic reuseport;
   # add_header Alt-Svc 'h3=":443"; ma=86400' always;

   server_name example.com;

   ssl_protocols TLSv1.2 TLSv1.3;
   ssl_prefer_server_ciphers off;
   ssl_session_cache shared:SSL:10m;
   ssl_session_timeout 1d;

   add_header Strict-Transport-Security "max-age=31536000" always;
   # votre configuration de certificat SSL ici
}

Prérequis : module HTTP/2 compilé, bibliothèque TLS avec prise en charge ALPN. La plupart des paquets modernes incluent les deux.

Apache : activer HTTP/2

# Charger le module
LoadModule http2_module modules/mod_http2.so

# Activer globalement ou dans un vhost
Protocols h2 http/1.1

# Optionnel : restreindre aux TLS modernes
H2ModernTLSOnly on

La prise en charge d'Apache HTTP/3 est expérimentale. Restez sur HTTP/2 pour la production.

CDN : activer HTTP/2/3 (Cloudflare, CloudFront, Akamai, Fastly)

La plupart des CDN prennent en charge HTTP/2 et HTTP/3. Activez-les pour le trafic HTTPS. Ouvrez le port UDP/443 si vous gérez votre propre edge et souhaitez utiliser HTTP/3. Si l'UDP est bloqué, les clients reviennent à HTTP/2. Le protocole CDN vers origine est séparé ; utilisez-le si c'est facile, mais l'impact utilisateur provient de l'edge.

Cloudflare

Tableau de bord > Speed > Optimization > HTTP/2 et HTTP/3 (activés par défaut)

AWS CloudFront

Paramètres de distribution > Versions HTTP prises en charge > HTTP/2 et HTTP/3

Fastly

Configuration du service > Paramètres > Prise en charge HTTP/2 et HTTP/3

Vérification + comportement de repli

Les navigateurs négocient automatiquement pendant la négociation TLS à l'aide d'ALPN. Si HTTP/3 échoue (UDP bloqué), ils reviennent à HTTP/2. Si HTTP/2 échoue (serveur ancien), ils utilisent HTTP/1.1. Aucune intervention manuelle nécessaire.

Vérifiez votre configuration :

  • Les navigateurs modernes affichent h2/h3 dans la colonne Protocole des DevTools
  • Les graphiques Waterfall montrent des téléchargements parallèles sur une seule connexion
  • H3 aide souvent davantage les liens mobiles/perdus que le bureau

Dépannage

HTTP/2 ne fonctionne pas ?

  • Vérifiez si votre build de serveur inclut le module HTTP/2
  • Vérifiez si la bibliothèque TLS prend en charge ALPN (OpenSSL 1.0.2+)
  • Assurez-vous de tester sur HTTPS (les navigateurs l'exigent)
  • Vérifiez si un proxy/équilibreur de charge ne rétrograde pas vers HTTP/1.1

HTTP/3 ne fonctionne pas ?

  • Vérifiez si le port UDP 443 est ouvert
  • Vérifiez si votre build prend en charge QUIC
  • Confirmez que l'en-tête Alt-Svc est envoyé
  • Testez depuis différents réseaux (certains bloquent l'UDP)

FAQ

Ai-je besoin de HTTPS pour HTTP/2 ?

Oui. Les navigateurs n'utilisent HTTP/2 qu'avec TLS.

HTTP/3 est-il obligatoire ?

Non, mais activez-le quand vous le pouvez. Gardez HTTP/2 comme repli.

Comment vérifier si HTTP/2/3 est actif ?

Utilisez la colonne Protocole des DevTools, ou exécutez curl avec --http2 ou --http3.

Pourquoi l'activation de HTTP/2 n'a-t-elle pas beaucoup changé les choses ?

La lenteur des applications et les pertes réseau s'appliquent toujours. Mettez en cache et profilez votre application ; utilisez HTTP/3 pour les liens perdus.