3

Installer et configurer Nginx avec le protocole HTTP/2

Un petit mémo sur comment installer Nginx 1.9 sur Debian Jessie et ajouter la prise en charge du HTTP/2 pour améliorer le temps de chargement des pages d’un site web sécurisé.

Qu’est-ce HTTP/2

Le protocole HTTP/2 reprend les bases du protocole HTTP 1.1 tout en ajoutant de la rapidité et de la sécurité (support du SSL) car basé sur le code de SPDY, un protocole développé par Google.

La grande force du protocole HTTP/2 est de pouvoir faire du « Multiplexing », qui permet d’envoyer dans un seul flux de données tous les fichiers d’un site web.

Pour résumé HTTP/2 c’est : support du protocole SSL + Multiplexing = Chargement de page web sécurisé très rapide !

Quels navigateurs supportent le HTTP/2 ?

Cependant comme le protocole HTTP/2 est une technologie très récente, tous les navigateurs internet ne le supportent pas encore. Cependant, pas d’inquiétude pour les utilisateurs de Firefox car il est compatible et activé par défaut depuis la version 36 8-)

Pour les autres principaux Navigateurs :

  • Google Chrome depuis la version 41.
  • Internet Explorer 11.
  • Microsoft Edge.
  • Opera depuis la version 28.
  • Safari depuis la version 8.

Installer Nginx 1.9.* sous Debian

La prise en charge du protocole HTTP/2 est complètement compatible depuis la version 1.9.5 de Nginx sachant que la version stable est la 1.8 .

Installation de la dernière version de Nginx

  • ajout du dépôt Nginx :
  • echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" > /etc/apt/sources.list.d/nginx.list
  • Ajout de la clé :
  • wget -O - http://nginx.org/keys/nginx_signing.key | apt-key add -
  • Mise à jour :
  • apt update
  • Installation de Nginx 1.9.* :
  • apt install nginx
  • Vérification de la version :
  • nginx -V

    nginx-http2

Ajout de la prise en charge du HTTP/2

  • Modifier le block server Nginx à la ligne ou se trouve le paramètre listen et ajouter http2:
  • server {
            listen 443 default_server ssl http2;
    ****
    

    Exemple de configuration, celle du blog :

    server {
    listen 1443 ssl http2;
    server_name memo-linux.com;
    access_log /var/log/nginx/memolinux-access.log main;
    error_log /var/log/nginx/memolinux-error.log;
    ##Paramétrage ssl/tls
    ssl_certificate /etc/letsencrypt/live/memo-linux.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/memo-linux.com/privkey.pem;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_dhparam /etc/ssl/private/dhparams.pem;
    ssl_buffer_size 16k;
    ###
    *****
    ***
    **
    }
    
  • Recharger le service nginx :
  • systemctl reload nginx
  • Jeter un coup d’oeil dans les fichiers de logs d’accès :
  • *******
    "GET /category/ubuntu/ HTTP/2.0" 200 8330 "https://memo-linux.com/comment-configurer-correctement-la-frequence-du-cpu-sous-ubuntu/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0"
    ******
    
  • Ou vérifier avec un outil de developpeur dans un navigateur :
  • memolinux-http2

Partager l'article :





fred

"Dire que l'on s'en fiche du droit à la vie privée sous prétexte qu'on a rien à cacher, c'est comme déclarer que l'on se fiche du droit à la liberté d'expression sous prétexte qu'on a rien à dire." Edward Snowden

3 commentaires

  1. Sauf que la version de OpenSSL dans le dépôt stable de Debian ne supporte pas HTTP2.

  2. Article très intéressant merci,
    pour ma part openssl de debian jessie 8.2 n’a pas posé de problème,
    le problème vient surtout du ssl_cipher, il faut absolument le modifier sinon il y a des erreurs de protocole de transfert:
    ssl_ciphers « EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED »;
    ssl_prefer_server_ciphers on;

  3. Salut yonisolo,
    en fait pour être full HTTP/2 il faut obligatoirement au minima openssl 1.0.2 , tu peux tester ta compatibilité HTTP/2 ici : https://tools.keycdn.com/http2-test
    Sinon concernant les cipher, je vais ajouter le minima dans l’artcile pour être bon. Merci pour ton complément d’infos.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.