Protocole de transfert hypertexte version 2 (HTTP/2 ) est la dernière version du protocole HTTP, publiée en tant que norme IETF dans la RFC 7540 en 2015. Le protocole est axé sur les performances ; plus précisément, la latence perçue par l'utilisateur final, l'utilisation des ressources du réseau et du serveur. L'un des principaux objectifs est de permettre l'utilisation d'une seule connexion entre les navigateurs et un site Web. Le protocole étant rétrocompatible, les méthodes HTTP, les codes d'état et la sémantique sont les mêmes que pour les versions précédentes du protocole. Nginx prend en charge HTTP/2 depuis la version 1.9.5. Dans ce didacticiel, je vais supposer que vous disposez déjà d'une configuration TLS fonctionnelle et que vous avez requis la version Nginx installée sur la distribution Linux de votre choix, et que vous savez comment utiliser Let's Encrypt, ou que vous savez comment émettre un certificat auto-signé.
Exigences
Pour activer HTTP/2 dans Nginx, vous devez remplir les conditions suivantes :
- Nginx version 1.9.5 ou ultérieure. Vous pouvez vérifier votre version de Nginx en exécutant (
nginx -v
) commande. - OpenSSL version 1.0.2 ou supérieure. Vous pouvez vérifier votre version d'OpenSSL en exécutant la commande (OpenSSL version).
- Certificat SSL/TLS de Let's Encrypt ou un certificat auto-signé.
- Protocole TLS 1.2 ou supérieur activé. Sinon, vous ne pourrez pas utiliser HTTP/2. Les implémentations de HTTP/2 doivent utiliser TLS version 1.2 ou ultérieure pour HTTP/2 sur TLS.
Activer HTTP/2 dans Nginx
Pour activer HTTP/2 dans Nginx, nous devons ajouter le http2
paramètre à listen
directive dans notre hôte virtuel :
listen 443 ssl http2;
Et rechargez votre configuration Nginx :
sudo systemctl reload nginx.service
Voici la configuration minimale du serveur virtuel qui peut être utilisée pour activer HTTP/2 dans certains hôtes virtuels :
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
root /path/to/public;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
ssl_protocols TLSv1.2;
}
Pour vérifier si votre serveur est compatible avec HTTP/2, vous pouvez utiliser les outils de développement de votre navigateur ou les fichiers journaux Nginx. Ci-dessous est une capture d'écran du navigateur Google Chrome qui montre HTTP/2 en action sur le domaine https://example.com .
Vous pouvez également utiliser la variable intégrée Nginx $http2 pour afficher le protocole négocié. Cette variable enregistrera : "h2
" pour HTTP/2 sur TLS, "h2c
" pour HTTP/2 sur TCP en clair, ou une chaîne vide sinon dans le journal d'accès Nginx si configuré pour le faire.
Et c'est tout ce qu'il faut pour activer HTTP/2 sur votre serveur Nginx.
Liens
- RFC 7540
- HTTP/2