15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
01.11.2024
1 +1

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

  1. Qu’est-ce que HTTP/2 et pourquoi est-ce important ?
  2. Prérequis
  3. Étape 1 — Mettre à jour l’index des paquets système
  4. Étape 2 — Installer Nginx
  5. Étape 3 — Installer OpenSSL
  6. Étape 4 — Obtenir un certificat SSL gratuit avec Let’s Encrypt
  7. Étape 5 — Configurer Nginx pour HTTP/2
  8. Étape 6 — Optimiser votre configuration Nginx HTTP/2
  9. Étape 7 — Tester la configuration Nginx
  10. Étape 8 — Redémarrer Nginx et appliquer les modifications
  11. Étape 9 — Vérifier que HTTP/2 est actif
  12. Dépannage des problèmes courants
  13. 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.1HTTP/2
MultiplexageUne demande par connexionPlusieurs demandes simultanées
Compression d’en-têtesEn-têtes en texte brutCompression HPACK
Server pushNon supportéSupporté
Protocole binaireBasé sur le texteEncadrement binaire
Réutilisation de connexionLimitéeEntièrement persistante
LatencePlus élevéeConsidé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 sudo privilè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 -y

Cette 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 -y

Démarrer le service Nginx

Une fois installé, démarrez le service Nginx immédiatement :

sudo systemctl start nginx

Activer Nginx pour démarrer automatiquement au démarrage

Assurez-vous que Nginx se lance automatiquement à chaque redémarrage du serveur :

sudo systemctl enable nginx

Vérifier que Nginx est en cours d’exécution

Confirmez que le service est actif et en cours d’exécution :

sudo systemctl status nginx

Vous 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 status

Nginx 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 -y

Vérifiez la version installée :

openssl version

Vous 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 -y

Demander 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.com

Certbot va :

  1. Vérifier la propriété du domaine via un défi HTTP
  2. Émettre le certificat de Let’s Encrypt
  3. Modifier automatiquement votre configuration Nginx pour utiliser le certificat
  4. 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-run

Si 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/default

Si vous avez créé un bloc serveur personnalisé pour votre domaine (recommandé), ouvrez ce fichier à la place :

sudo nano /etc/nginx/sites-available/your_domain.com

Mettre à 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 -t

Un test réussi produit :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si 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 nginx

Alternativement, 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 nginx

Pour 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.com

Recherchez l’en-tête de réponse :

HTTP/2 200

Si 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 h2

Dans la sortie, recherchez :

ALPN protocol: h2

h2 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

  1. Ouvrez votre site web dans Google Chrome ou Mozilla Firefox
  2. Appuyez sur F12 pour ouvrir les outils de développement
  3. Accédez à l’onglet Réseau
  4. Rechargez la page (F5 ou Ctrl+R)
  5. Cliquez avec le bouton droit sur n’importe quel en-tête de colonne dans la liste des demandes et activez la colonne Protocole
  6. Vous devriez voir h2 listé 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 directives ssl_certificate et ssl_certificate_key en conséquence.

Le port 443 n’est pas accessible

  • Cause : Le pare-feu bloque le trafic HTTPS.
  • Solution : Exécutez sudo ufw allow 443/tcp et vérifiez avec sudo ufw status.

Certbot échoue

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer