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
wget -O - http://nginx.org/keys/nginx_signing.key | apt-key add -
apt update
apt install nginx
nginx -V
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; ### ***** *** ** }
systemctl reload nginx
******* "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" ******
Sauf que la version de OpenSSL dans le dépôt stable de Debian ne supporte pas HTTP2.
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;
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.