GNU/Linux >> Tutoriels Linux >  >> Debian

Comment activer le protocole HTTP2 avec Nginx sur Debian 8 Jessie Server

Ce tutoriel vous montrera comment activer le protocole HTTP/2 avec Nginx sur un serveur Debian 8 pour accélérer le chargement des pages Web. Il y a 2 exigences.

  • Nginx version 1.9.5 ou ultérieure, construit avec OpenSSL 1.0.2
  • HTTPS activé

Abordons-les un par un.

Installation de Nginx depuis Jessie Backports Repo

ALPN (Application Layer Protocol Negotiation) est une extension TLS qui permet aux serveurs de négocier le protocole HTTP/2 avec les navigateurs Web. Sans ALPN, la connexion HTTP/2 ne peut pas être établie, même si le serveur Web et le navigateur Web prennent en charge HTTP/2. La bibliothèque OpenSSL prend en charge l'état ALPN avec la version 1.0.2.

Debian 8 a OpenSSL 1.0.1. Pour vérifier votre version d'OpenSSL, exécutez

openssl version

Veuillez noter qu'il n'est pas nécessaire d'installer OpenSSL 1.0.2 sur le système. Nous n'avons besoin que de Nginx 1.9.5 ou supérieur qui est construit avec OpenSSL 1.0.2. Nginx a ajouté la prise en charge de HTTP/2 dans la version 1.9.5. Le référentiel Debian 8 par défaut a Nginx 1.6.2. Heureusement, Jessie backports repo fournit Nginx 1.10.3 construit avec OpenSSL 1.0.2l.

Pour ajouter ce référentiel, créez un fichier de liste source.

sudo nano /etc/apt/sources.list.d/jessie-backports.list

Ajoutez la ligne suivante à ce fichier.

deb http://ftp.debian.org/debian jessie-backports main

Enregistrez et fermez le fichier. Ensuite, mettez à jour l'index du package et installez Nginx à partir du référentiel Jessie backports.

sudo apt update
sudo apt -t jessie-backports install nginx

Vérifiez la version de Nginx et configurez les paramètres.

sudo nginx -V

Sortie :

nginx version: nginx/1.10.3
built with OpenSSL 1.0.2l 25 May 2017
TLS SNI support enabled

Le référentiel Nginx.org contient la dernière version de Nginx pour Debian 8. Mais ce package est construit avec OpenSSL 1.0.1, il ne prend donc pas en charge ALPN.

Installation du certificat SSL sur Debian 8

Nous pouvons installer un certificat SSL gratuit délivré par Let's Encrypt. Tout d'abord, installez le client Let's Encrypt (Certbot) sur Debian 8 à partir du référentiel Jessie Backports. Python-certbot-nginx est le plugin Nginx pour Certbot.

sudo apt install -t jessie-backports certbot python-certbot-nginx

Maintenant, si vous avez configuré un hôte virtuel Nginx, utilisez le plugin Nginx pour obtenir et installer le certificat SSL comme ci-dessous

sudo certbot --nginx --agree-tos -d example.com --redirect --staple-ocsp --must-staple --email your-email-address

Explication :

  • --nginx  :Utiliser le plug-in Nginx
  • --agree-tos  :Acceptez les conditions d'utilisation de Let's Encrypt
  • --redirect  :Redirigez automatiquement tout le trafic HTTP vers HTTPS pour le vhost nouvellement authentifié.
  • --staple-ocsp  :Active l'agrafage OCSP
  • --must-staple :Ajoute l'extension OCSP Must Staple au certificat
  • --email :E-mail utilisé pour l'enregistrement et le contact de récupération

Activation du protocole HTTP2

Par défaut, Certbot ne configure pas HTTP/2 pour Nginx. Pour activer HTTP/2, modifiez votre fichier d'hôte virtuel Nginx. Trouvez la directive suivante.

listen 443 ssl;

Ajoutez ensuite http2 comme ci-dessous.

listen 443 ssl http2;

Enregistrez et fermez le fichier. Recharger Nginx.

sudo systemctl reload nginx

Tester

Comment savez-vous que votre site utilise réellement le protocole HTTP2 ?

  • Dans Firefox ou Google Chrome, chargez une page de votre site, puis appuyez sur Ctrl+Shift+I pour ouvrir les outils de développement , cliquez sur Réseau languette. Vous pouvez voir le protocole utilisé pour votre domaine.
  • Vous pouvez également installer l'extension HTTP/2 et SPDY Indicator dans Google Chrome.
  • Installez l'extension HTTP/2 Indicator dans Firefox.
  • L'outil de test HTTP/2 en ligne de KeyCDN peut vous dire si HTTP/2 et ALPN sont pris en charge sur votre site.

Notez que vous devrez peut-être vider le cache de votre navigateur car les objets mis en cache peuvent être marqués par erreur avec le protocole HTTP/1.1.

Comment activer le serveur push

HTTP/2 est livré avec une fonctionnalité appelée serveur push , qui permet au serveur Web d'envoyer des ressources que le navigateur Web n'a pas demandées, mais qui sont nécessaires pour charger des pages Web. Par exemple, si le navigateur Web demande un document HTML, le serveur Web sait que le client aura besoin du fichier CSS associé et l'enverra avec le document HTML, éliminant ainsi la nécessité pour le navigateur Web d'envoyer la demande de CSS, donc un tour le voyage est réduit.

Ici, j'utilise WordPress comme exemple. Les ressources suivantes sont généralement nécessaires pour le site WordPress.

  • style.css :la feuille de style principale, située à la racine du répertoire du thème.
  • jquery.js :bibliothèque JQuery
  • jquery-migrate.min.js :l'ancien JQuery
  • wp-embed.min.js :pour l'intégration de vidéos

Pour pousser ces ressources vers les clients, ajoutez les directives suivantes dans server bloc. Remplacez vingt-sept par votre propre nom de thème WordPress.

http2_push /wp-content/themes/twentyseventeen/style.css;
http2_push /wp-includes/js/jquery/jquery.js;
http2_push /wp-includes/js/jquery/jquery-migrate.min.js;
http2_push /wp-includes/js/wp-embed.min.js;

Enregistrez et fermez le fichier. Redémarrez ensuite Nginx pour que les modifications prennent effet.

sudo systemctl restart nginx

Notez que vous devez ajouter le code suivant dans functions.php fichier pour supprimer le numéro de version des fichiers WordPress CSS et JavaScript. Lors des mises à jour de WordPress, le push du serveur ne fonctionnera pas si le numéro de version est ajouté à ces fichiers.

// Remove WP Version From Styles        
add_filter( 'style_loader_src', 'sdt_remove_ver_css_js', 9999 );
// Remove WP Version From Scripts
add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999 );

// Function to remove version numbers
function sdt_remove_ver_css_js( $src ) {
        if ( strpos( $src, 'ver=' ) )
                $src = remove_query_arg( 'ver', $src );
        return $src;
}

Tester le push du serveur

Dans le navigateur Google Chrome, chargez votre page, puis appuyez sur Ctrl+Shift+I pour ouvrir les outils de développement et cliquez sur l'onglet Réseau. Appuyez sur F5 pour recharger. Comme vous pouvez le voir sur la capture d'écran ci-dessous, le serveur push fonctionne sur l'un de mes sites Web. Si vous voyez "à partir du cache de la mémoire", cliquez dessus avec le bouton droit de la souris, effacez le cache du navigateur et rechargez.

Améliorations

Le plugin Certbot Nginx n'est toujours pas mature. J'ai obtenu B sur le test SSL Labs après avoir utilisé le plugin Nginx en raison de l'utilisation de paramètres d'échange de clés faibles. Le générateur de configuration SSL de Mozilla est un bon outil pour vous aider à créer des configurations SSL modernes.

C'est ça! J'espère que ce tutoriel vous a aidé à activer HTTP/2 avec Nginx sur le serveur Debian 8. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite.


Debian
  1. Comment installer Proxmox VE 4 sur Debian 8 (Jessie)

  2. Comment installer le serveur HTTP Git avec Nginx sur Debian 11

  3. Comment construire nginx avec le module Google PageSpeed ​​sur Debian 8 (Jessie)

  4. Comment activer HTTP2 dans NGINX

  5. Comment installer WonderCMS avec Nginx sur Debian 11

Comment économiser du trafic avec nginxs HttpGzipModule sur Debian Jessie

Comment configurer LAMP avec Debian 11

Comment configurer le serveur Samba avec Debian 11

Comment installer phpMyAdmin avec Nginx sur Debian 11

Comment installer Nginx avec PHP-FPM sur Debian 11

Comment installer Nginx dans Debian 7