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 requêtes 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 de 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 Serveur Dédié, ce tutoriel s’applique directement à votre environnement.
Qu’est-ce que HTTP/2 et pourquoi est-ce important ?
HTTP/2 est la deuxième version majeure du Hypertext Transfer Protocol, standardisé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.
Principaux avantages de HTTP/2 par rapport à HTTP/1.1 :
| Fonctionnalité | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Multiplexage | Une requête par connexion | Plusieurs requêtes simultanées |
| Compression d’en-tête | En-têtes en texte brut | Compression HPACK |
| Server push | Non supporté | Supporté |
| Protocole binaire | Basé sur du texte | Framing 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 page plus rapides, de meilleurs scores Core Web Vitals et un meilleur classement SEO — puisque Google utilise la vitesse de page 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 que vous disposez des éléments suivants :
- 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
sudoprivileges 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 AlexHost Domain Registration 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 locale des paquets 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-le 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 boot
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), qui sont tous deux requis pour cette configuration.
Étape 3 — Installer OpenSSL
HTTP/2 dépend de TLS, qui dépend à son tour 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 complètement 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 principaux navigateurs. 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 le nom de domaine réellement enregistré :
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 simulation :
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 Serveur Dédié 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 se trouve à :
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 — Optimisez votre configuration Nginx HTTP/2
L’activation simple de HTTP/2 est un bon début, mais l’application d’optimisations supplémentaires garantit que vous tirez les performances maximales de votre configuration.
Paramètres SSL et de performance recommandés
Ajoutez ou vérifiez les directives suivantes dans 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ête HPACK, mais l’activation de Gzip pour les corps de réponse fournit toujours des économies de bande passante significatives pour les ressources basées 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 arrêter 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 que le test de configuration réussit, redémarrez Nginx pour appliquer toutes les modifications :
sudo systemctl restart nginxVous pouvez également, si vous préférez un rechargement sans interruption de service (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 complètement 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 curl en ligne de commande 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 ceci, 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 requêtes et activez la colonne Protocole
- Vous devriez voir
h2listé comme protocole pour les requêtes 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 n’apparaît pas dans le navigateur malgré la configuration
- Cause : Le navigateur a mis en cache une connexion HTTP/1.1 plus ancienne.
- Fix : 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.
- Fix : 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.
- Fix : Exécutez
sudo ufw allow 443/tcpet vérifiez avecsudo ufw status.
Certbot échoue la validation du domaine
- Cause : L’enregistrement DNS A n’a pas encore été propagé, ou le port 80 est bloqué.
- Fix : Vérifiez que votre domaine se résout vers l’IP correcte en utilisant
dig your_domain.com A. Assurez-vous que le port 80 est ouvert pour le défi ACME HTTP.
Erreur unknown directive "http2" dans Nginx
- Cause : La version de Nginx est trop ancienne (antérieure à 1.9.5) ou a été compilée sans support HTTP/2.
- Fix : Mettez à niveau Nginx. Sur Ubuntu 20.04+, la version du référentiel par défaut supporte HTTP/2. Vous pouvez également ajouter le PPA officiel de Nginx :
sudo add-apt-repository ppa:nginx/stable && sudo apt update && sudo apt upgrade nginx.
Conclusion
Vous avez installé avec succès Nginx avec le support complet HTTP/2 sur Ubuntu. Voici un résumé de tout ce qui a été réalisé :
- ✅ Installation et activation de Nginx en tant que service système
- ✅ Obtention d’un certificat SSL gratuit et auto-renouvelable via Let’s Encrypt et Certbot
- ✅ Configuration du bloc serveur Nginx avec la directive
http2 - ✅ Application du renforcement TLS, de l’agrafage OCSP, de HSTS et de la compression Gzip
- ✅ Test de la configuration et vérification que HTTP/2 est actif
L’activation de HTTP/2 est l’une des optimisations ayant le plus grand impact et nécessitant le moins d’effort que vous puissiez apporter à un serveur web. Combinée à des paramètres TLS solides et à des en-têtes de mise en cache appropriés, elle améliore considérablement les temps de chargement des pages, les scores Core Web Vitals et, en fin de compte, le classement de votre site dans les moteurs de recherche.
Maintenez votre pile à jour : Exécutez régulièrement sudo apt update && sudo apt upgrade pour maintenir Nginx, OpenSSL et Certbot à jour avec les derniers correctifs de sécurité.
Poussez les performances de votre serveur plus loin
Les gains de performance de HTTP/2 sont les plus prononcés sur une infrastructure rapide et fiable. Si vous êtes actuellement sur un hébergement partagé et que vous atteignez les limites de ressources, envisagez de passer à un plan VPS Hosting pour des ressources dédiées et un accès root complet. Pour les applications à fort trafic, les serveurs dédiés offrent des performances brutes inégalées. Vous pouvez également gérer facilement votre environnement serveur avec un VPS avec cPanel si vous préférez une interface graphique à la ligne de commande.
Quels que soient vos besoins en infrastructure, AlexHost fournit la plateforme pour exécuter Nginx, HTTP/2 et votre pile web complète à l’efficacité maximale.
sur tous les services d'hébergement