HTTP2 Nginx

Ubuntu – Activer HTTP/2 avec Nginx

Le support du protocole HTTP2 dans Nginx date de la version 1.9.5 (sortie en septembre 2015) or sur les versions d’Ubuntu antérieures à la 16.04, les versions de Nginx disponibles dans les paquets officiels sont plus anciennes. Nous allons voir dans cet article comment installer manuellement la dernière version de Nginx sur les versions 14.04, 15.04, 15.10 et 16.04 d’Ubuntu (non disponible pour les architectures ARM).

Nginx distingue deux types de versions : stable et mainline. Les paquets officiels d’Ubuntu contiennent uniquement des versions de la branche stable où seuls les bugs majeurs sont corrigés. Nginx recommande d’utiliser les versions de la branche mainline qui introduisent les nouvelles fonctionnalités et qui contiennent la totalité des bugs corrigés (mineurs et majeurs). Nous allons donc nous intéresser ici à la dernière version de la branche mainline.

Ubuntu 14.04/15.04 (Trusty/Vivid)

1 – Mise à jour d’OpenSSL

Nginx doit être compilé avec OpenSSL 1.0.2 pour que le protocole HTTP/2 soit pris en compte par les navigateurs. Cependant, avec Ubuntu 14.04 et 15.04, la dernière version disponible d’OpenSSL est la 1.0.1f.

La version 1.0.2 inclut la spécification RFC7301 ou le support du protocole ALPN (Application-Layer Protocol Negotiation) qui est requis pour pouvoir accepter des négociations HTTP/2.
La version 1.0.1 ne permet d’utiliser que le protocole NPN (Next Protocol Negotiation) qui est maintenant déprécié.

  • Installez tout d’abord l’outil GCC pour pouvoir compiler OpenSSL :
  • Téléchargez la dernière version d’OpenSSL :
  • Récupérez la signature SHA1 du source afin de vérifier l’intégrité de l’archive :
  • Comparez les deux signatures (celles-ci doivent être identiques) :
  • Décompressez l’archive téléchargée :
  • Installez la dernière version d’OpenSSL :
  • Vérifiez la version d’OpenSSL :

    La commande doit afficher sur la sortie standard :

2 – Installation de Nginx (branche mainline)

  • Si Nginx était installé sur votre système, il est nécessaire de supprimer le paquet nginx-common :
  • Créez le fichier /etc/apt/sources.list.d/nginx.list et ajoutez les lignes suivantes :
  • Ajoutez la clé d’authentification du paquet nginx :
  • Installez la dernière version de Nginx :
  • Vérifiez la présence du module –with-http_v2_module en tapant la commande nginx -V :
    HTTP/2 Nginx

3 – Configuration de Nginx


Cette partie s’adresse à ceux qui possédaient une version stable déjà installée sur leur système. Pour les autres, rendez-vous au chapitre 4.


3.1 – Chargement des virtual hosts…


La configuration diffère quelque peu des versions de la branche stable et de la branche mainline. En effet, les configurations liées à Nginx des versions de la branche stable sont placées dans le dossier /etc/nginx/site-available et sont chargées dans le dossier /etc/nginx/site-enabled (liées par des liens symboliques). En revanche, les configurations liées à Nginx des versions de la branche mainline chargent uniquement les fichiers dont l’extension est .conf dans le dossier /etc/nginx/conf.d. Deux possibilités s’offrent à vous :

  1. la première consiste tout simplement à déplacer les configurations du dossier /etc/nginx/site-available vers le dossier /etc/nginx/conf.d et d’ajouter l’extension .conf à chacune de vos configurations
  2. la deuxième consiste à remplacer directement dans la configuration de Nginx l’emplacement où seront chargées les configurations de vos sites web (en partant du principe que vous gardez la mécanique des liens symboliques du dossier /etc/nginx/site-enabled pointant vers le dossier /etc/nginx/site-available) :

3.2 – Processus…


Les processus Nginx des versions de la branche mainline sont lancés sous l’utilisateur nginx. Cependant Ubuntu utilise l’utilisateur www-data dans les versions de la branche stable. Cette différence d’utilisateur peut engendrer des problèmes de permissions lors de l’accès à vos ressources web. Il peut être nécessaire de modifier l’utilisateur dans le fichier de configuration /etc/nginx/nginx.conf de Nginx :

Redémarrez Nginx :

4 – Configuration des Vhosts

  • Ajoutez la directive http2 dans le fichier de configuration de votre virtual host :
  • Rechargez la configuration Nginx :

Ubuntu 15.10 (Wily)

1 – Installation de Nginx (branche mainline)

  • Si Nginx était installé sur votre système, il est nécessaire de supprimer le paquet nginx-common :
  • Créez le fichier /etc/apt/sources.list.d/nginx.list et ajoutez les lignes suivantes :
  • Ajoutez la clé d’authentification du paquet nginx :
  • Installez la dernière version de Nginx :
  • Vérifiez la présence du module –with-http_v2_module en tapant la commande nginx -V :
    HTTP/2 Nginx

2 – Configuration de Nginx


Cette partie s’adresse à ceux qui possédaient une version stable déjà installée sur leur système. Pour les autres, rendez-vous au chapitre 3.


2.1 – Chargement des virtual hosts…

La configuration diffère quelque peu des versions de la branche stable et de la branche mainline. En effet, les configurations liées à Nginx des versions de la branche stable sont placées dans le dossier /etc/nginx/site-available et sont chargées dans le dossier /etc/nginx/site-enabled (liées par des liens symboliques). En revanche, les configurations liées à Nginx des versions de la branche mainline chargent uniquement les fichiers dont l’extension est .conf dans le dossier /etc/nginx/conf.d. Deux possibilités s’offrent à vous :

  1. la première consiste tout simplement à déplacer les configurations du dossier /etc/nginx/site-available vers le dossier /etc/nginx/conf.d et d’ajouter l’extension .conf à chacune de vos configurations
  2. la deuxième consiste à remplacer directement dans la configuration de Nginx l’emplacement où seront chargées les configurations de vos sites web (en partant du principe que vous gardez la mécanique des liens symboliques du dossier /etc/nginx/site-enabled pointant vers le dossier /etc/nginx/site-available) :

2.2 – Processus…


Les processus Nginx des versions de la branche mainline sont lancés sous l’utilisateur nginx. Cependant Ubuntu utilise l’utilisateur www-data dans les versions de la branche stable. Cette différence d’utilisateur peut engendrer des problèmes de permissions lors de l’accès à vos ressources web. Il peut être nécessaire de modifier l’utilisateur dans le fichier de configuration /etc/nginx/nginx.conf de Nginx :

Redémarrez Nginx :

3 – Configuration des Vhosts

  • Ajoutez la directive http2 dans le fichier de configuration de votre virtual host :
  • Rechargez la configuration Nginx :

Ubuntu 16.04 (Xenial)

Ubuntu 16.04 dispose de la version 1.9.11 de Nginx dans ses paquets officiels et celle-ci supporte le HTTP/2. Il est simplement nécessaire de l’activer dans votre virtual host.

  • Ajoutez la directive http2 dans le fichier de configuration de votre virtual host :
  • Rechargez la configuration Nginx :


Auteur
AuteurEdouard WATTECAMPS

0 réponses

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

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