Comment installer Nginx avec support HTTP/2 sur Ubuntu (Guide complet)
Nginx est l’un des serveurs web les plus largement déployés au monde, célèbre pour ses performances exceptionnelles, sa faible empreinte mémoire et sa capacité à gérer des milliers de connexions simultanées. Lorsqu’il est combiné avec HTTP/2, Nginx devient une plateforme encore plus puissante — permettant les demandes multiplexées, la compression d’en-têtes, le server push et une réduction drastique des temps de chargement des pages.
Ce guide complet vous guide à travers chaque étape requise pour installer Nginx avec un support complet HTTP/2 sur Ubuntu 20.04 et Ubuntu 22.04 LTS, de la configuration initiale à la configuration SSL, l’optimisation des blocs serveur et la vérification en direct.
> À qui s’adresse ce guide ? Administrateurs système, développeurs et propriétaires de sites web qui souhaitent maximiser les performances web sur un serveur Linux. Si vous exécutez votre site sur un plan VPS Hosting ou un Dedicated Server, ce tutoriel s’applique directement à votre environnement.
Table des matières
- Qu’est-ce que HTTP/2 et pourquoi est-ce important ?
- Prérequis
- Étape 1 — Mettre à jour l’index des paquets système
- Étape 2 — Installer Nginx
- Étape 3 — Installer OpenSSL
- Étape 4 — Obtenir un certificat SSL gratuit avec Let’s Encrypt
- Étape 5 — Configurer Nginx pour HTTP/2
- Étape 6 — Optimiser votre configuration Nginx HTTP/2
- Étape 7 — Tester la configuration Nginx
- Étape 8 — Redémarrer Nginx et appliquer les modifications
- Étape 9 — Vérifier que HTTP/2 est actif
- Dépannage des problèmes courants
- Conclusion
Qu’est-ce que HTTP/2 et pourquoi est-ce important ?
HTTP/2 est la deuxième version majeure du protocole Hypertext Transfer Protocol, normalisée dans RFC 7540. Il a été conçu pour résoudre les limitations de performance de HTTP/1.1, qui est utilisé depuis 1997.
Avantages clés de HTTP/2 par rapport à HTTP/1.1 :
| Fonctionnalité | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexage | Une demande par connexion | Plusieurs demandes simultanées |
| Compression d’en-têtes | En-têtes en texte brut | Compression HPACK |
| Server push | Non supporté | Supporté |
| Protocole binaire | Basé sur le texte | Encadrement binaire |
| Réutilisation de connexion | Limitée | Entièrement persistante |
| Latence | Plus élevée | Considérablement réduite |
Pour les propriétaires de sites web, l’activation de HTTP/2 se traduit directement par des chargements de pages plus rapides, de meilleurs scores Core Web Vitals et un meilleur classement SEO — puisque Google utilise la vitesse des pages comme signal de classement.
> Important : HTTP/2 nécessite HTTPS (TLS/SSL). Vous ne pouvez pas exécuter HTTP/2 sur une connexion non chiffrée dans aucun navigateur moderne. C’est pourquoi l’obtention d’un certificat SSL est une étape obligatoire dans ce guide. Si vous avez besoin d’un certificat de confiance pour votre domaine, AlexHost propose des Certificats SSL pour tous les cas d’usage.
Prérequis
Avant de commencer, assurez-vous d’avoir les éléments suivants en place :
- Un serveur exécutant Ubuntu 20.04 LTS ou Ubuntu 22.04 LTS (les étapes sont presque identiques pour les deux)
- Un utilisateur non-root avec
sudoprivilèges ou un accès root direct - Un nom de domaine enregistré pointant vers l’adresse IP de votre serveur via un enregistrement A
- Les ports 80 et 443 ouverts dans votre pare-feu (UFW ou iptables)
- Une familiarité de base avec la ligne de commande Linux
Si vous n’avez pas encore de domaine, vous pouvez en enregistrer un directement via Enregistrement de domaine AlexHost et le pointer vers votre serveur en quelques minutes.
Étape 1 — Mettre à jour l’index des paquets système
Commencez toujours par actualiser votre index de paquets pour vous assurer que vous installez les dernières versions disponibles de tous les logiciels :
sudo apt update && sudo apt upgrade -yCette commande met à jour la liste des paquets locaux et met à niveau tous les paquets obsolètes déjà installés sur votre système.
Étape 2 — Installer Nginx
Installer le paquet Nginx
Les dépôts par défaut d’Ubuntu incluent une version stable de Nginx. Installez-la avec :
sudo apt install nginx -yDémarrer le service Nginx
Une fois installé, démarrez le service Nginx immédiatement :
sudo systemctl start nginxActiver Nginx pour démarrer automatiquement au démarrage
Assurez-vous que Nginx se lance automatiquement à chaque redémarrage du serveur :
sudo systemctl enable nginxVérifier que Nginx est en cours d’exécution
Confirmez que le service est actif et en cours d’exécution :
sudo systemctl status nginxVous devriez voir une sortie similaire à :
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since ...Autoriser Nginx à travers le pare-feu
Si UFW est actif sur votre serveur, autorisez le trafic HTTP et HTTPS :
sudo ufw allow 'Nginx Full'
sudo ufw statusNginx Full ouvre à la fois le port 80 (HTTP) et le port 443 (HTTPS), tous deux requis pour cette configuration.
Étape 3 — Installer OpenSSL
HTTP/2 dépend de TLS, qui à son tour dépend d’OpenSSL. Installez-le pour vous assurer que toutes les dépendances cryptographiques sont disponibles :
sudo apt install openssl -yVérifiez la version installée :
openssl versionVous devriez voir une sortie comme OpenSSL 3.0.x ou similaire. Toute version supérieure à 1.0.2 supporte pleinement les suites de chiffrement requises pour HTTP/2.
Étape 4 — Obtenir un certificat SSL gratuit avec Let’s Encrypt
Let’s Encrypt fournit des certificats SSL/TLS gratuits et automatiquement renouvelables approuvés par tous les navigateurs majeurs. Le client Certbot rend l’ensemble du processus simple.
Installer Certbot et le plugin Nginx
sudo apt install certbot python3-certbot-nginx -yDemander votre certificat SSL
Remplacez your_domain.com par votre nom de domaine enregistré réel :
sudo certbot --nginx -d your_domain.com -d www.your_domain.comCertbot va :
- Vérifier la propriété du domaine via un défi HTTP
- Émettre le certificat de Let’s Encrypt
- Modifier automatiquement votre configuration Nginx pour utiliser le certificat
- Configurer les redirections HTTPS depuis HTTP
Suivez les invites interactives. Lorsqu’on vous demande si vous souhaitez rediriger le trafic HTTP vers HTTPS, sélectionnez l’option 2 (Redirection) — c’est le choix recommandé.
Vérifier le renouvellement automatique du certificat
Les certificats Let’s Encrypt expirent après 90 jours. Certbot installe une tâche cron ou un minuteur systemd pour les renouveler automatiquement. Testez le processus de renouvellement avec une exécution d’essai :
sudo certbot renew --dry-runSi aucune erreur n’apparaît, le renouvellement automatique est correctement configuré.
> Conseil : Pour les environnements de production avec plusieurs domaines ou certificats wildcard, envisagez un Dedicated Server pour un contrôle complet de votre infrastructure SSL.
Étape 5 — Configurer Nginx pour HTTP/2
Maintenant que SSL est en place, vous devez explicitement activer HTTP/2 dans la configuration du bloc serveur Nginx.
Ouvrir le fichier de configuration Nginx
La configuration du site par défaut est située à :
sudo nano /etc/nginx/sites-available/defaultSi vous avez créé un bloc serveur personnalisé pour votre domaine (recommandé), ouvrez ce fichier à la place :
sudo nano /etc/nginx/sites-available/your_domain.comMettre à jour le bloc serveur pour activer HTTP/2
Localisez la directive listen 443 ssl;. Certbot l’aura ajoutée automatiquement. Modifiez-la pour inclure http2 :
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name your_domain.com www.your_domain.com;
# SSL Certificate paths (set by Certbot)
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /var/www/your_domain.com/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
}
# HTTP to HTTPS redirect block
server {
listen 80;
listen [::]:80;
server_name your_domain.com www.your_domain.com;
return 301 https://$host$request_uri;
}Le changement critique se trouve sur la ligne listen : ajouter http2 après ssl active le protocole HTTP/2 pour cet hôte virtuel.
Enregistrer et quitter
Appuyez sur CTRL + X, puis Y, puis Enter pour enregistrer le fichier et quitter l’éditeur nano.
Étape 6 — Optimiser votre configuration Nginx HTTP/2
Simplement activer HTTP/2 est un bon début, mais appliquer des optimisations supplémentaires garantit que vous tirez le maximum de performance de votre configuration.
Paramètres SSL et de performance recommandés
Ajoutez ou vérifiez les directives suivantes à l’intérieur de votre bloc server :
# Modern TLS protocols only
ssl_protocols TLSv1.2 TLSv1.3;
# Strong cipher suites compatible with HTTP/2
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
# SSL session caching for performance
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# HTTP Strict Transport Security (HSTS)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
# Additional security headers
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# Gzip compression (complements HTTP/2)
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;> Remarque sur HTTP/2 et Gzip : HTTP/2 utilise sa propre compression d’en-têtes HPACK, mais l’activation de Gzip pour les corps de réponse fournit toujours des économies de bande passante significatives pour les actifs basés sur du texte.
Étape 7 — Tester la configuration Nginx
Ne redémarrez jamais Nginx sans d’abord tester la configuration pour les erreurs de syntaxe. Un fichier mal configuré peut mettre hors ligne votre serveur web entier.
Exécutez le test de configuration intégré :
sudo nginx -tUn test réussi produit :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulSi vous voyez des erreurs, examinez attentivement la sortie. Le message d’erreur inclura le nom du fichier et le numéro de ligne où le problème a été détecté.
Étape 8 — Redémarrer Nginx et appliquer les modifications
Une fois le test de configuration réussi, redémarrez Nginx pour appliquer toutes les modifications :
sudo systemctl restart nginxAlternativement, si vous préférez un rechargement sans temps d’arrêt (qui applique les modifications de configuration sans interrompre les connexions actives) :
sudo systemctl reload nginxPour l’activation de HTTP/2 spécifiquement, un redémarrage complet est recommandé pour assurer que les nouveaux paramètres de protocole sont pleinement initialisés.
Étape 9 — Vérifier que HTTP/2 est actif
Après le redémarrage de Nginx, confirmez que HTTP/2 est réellement servi aux clients en utilisant l’une des méthodes suivantes.
Méthode 1 : Utiliser curl
L’outil en ligne de commande curl peut signaler la version du protocole utilisée :
curl -I --http2 https://your_domain.comRecherchez l’en-tête de réponse :
HTTP/2 200Si vous voyez HTTP/2 200, HTTP/2 fonctionne correctement.
Méthode 2 : Utiliser la commande OpenSSL
openssl s_client -connect your_domain.com:443 -alpn h2Dans la sortie, recherchez :
ALPN protocol: h2h2 est l’identifiant ALPN pour HTTP/2. Si vous voyez cela, votre serveur annonce correctement le support HTTP/2 lors de la négociation TLS.
Méthode 3 : Utiliser les outils de développement du navigateur
- Ouvrez votre site web dans Google Chrome ou Mozilla Firefox
- Appuyez sur
F12pour ouvrir les outils de développement - Accédez à l’onglet Réseau
- Rechargez la page (
F5ouCtrl+R) - Cliquez avec le bouton droit sur n’importe quel en-tête de colonne dans la liste des demandes et activez la colonne Protocole
- Vous devriez voir
h2listé comme protocole pour les demandes de votre domaine
Méthode 4 : Utiliser un outil de test HTTP/2 en ligne
Visitez https://tools.keycdn.com/http2-test et entrez votre domaine. L’outil confirmera si HTTP/2 est actif et fournira des détails supplémentaires sur la configuration TLS de votre serveur.
Dépannage des problèmes courants
HTTP/2 ne s’affiche pas dans le navigateur malgré la configuration
- Cause : Le navigateur a mis en cache une connexion HTTP/1.1 plus ancienne.
- Solution : Effacez le cache et les cookies du navigateur, ou testez dans une fenêtre privée/incognito.
nginx -t retourne des erreurs de certificat SSL
- Cause : Chemins de certificat incorrects dans le fichier de configuration.
- Solution : Vérifiez les chemins exacts en utilisant
sudo ls /etc/letsencrypt/live/your_domain.com/et mettez à jour les directivesssl_certificateetssl_certificate_keyen conséquence.
Le port 443 n’est pas accessible
- Cause : Le pare-feu bloque le trafic HTTPS.
- Solution : Exécutez
sudo ufw allow 443/tcpet vérifiez avecsudo ufw status.
