GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer Nginx avec la prise en charge HTTP/2 sur Ubuntu 18.04

Nginx est un serveur Web open source robuste, rapide, fiable et dynamique, populaire pour desservir les sites à fort trafic. De plus, il est réputé pour sa facilité de configuration, sa grande évolutivité et sa prise en charge d'une myriade de protocoles.
Parmi les protocoles pris en charge par Nginx se trouve le nouveau protocole HTTP/2 dont le principal avantage par rapport à son prédécesseur HTTP 1.1 est la vitesse de transfert élevée requise pour les sites Web riches en contenu.

Dans ce guide, nous approfondirons l'installation et la configuration d'un serveur Nginx sécurisé avec prise en charge HTTP/2 :

Prérequis

Pour commencer, passons en revue le contrôle de vol et voyons si nous avons ce qui suit

  • Une instance de serveur d'Ubuntu 18.04 LTS
  • Nginx version 1.9.5 ou supérieure (pour vérifier la version de Nginx, exécutez nginx -v ), lisez Installer Nginx sur Ubuntu 18.04.
  • OpenSSL version 1.0.2 ou supérieure (vérifiez la version à l'aide de la version openssl)
  • Un utilisateur normal non root avec des privilèges sudo
  • Un nom de domaine complet (FQDN) Dans ce cas, nous allons utiliser crazytechgeek.info acheté chez GoDaddy.

    L'enregistrement A du nom de domaine doit pointer vers l'adresse IP du serveur. crazytechgeek.info a été pointé vers 216.200.116.207.

  • Un certificat SSL (soit un certificat auto-signé, soit un certificat de Let's encrypt SSL. De même, vous pouvez en acheter un auprès d'un autre fournisseur.

Étape 1 – Activation de la prise en charge HTTP /2.0

Pour commencer, on suppose que vous avez configuré le bloc de serveur Nginx sur

/etc/nginx/sites-available/your_domain

Dans notre cas, le bloc serveur est /etc/nginx/sites-available/crazytechgeek.info .

À l'aide de votre éditeur de texte préféré, ouvrez le fichier de bloc du serveur et localisez le listen directive comme indiqué

La première directive indique les connexions IPv6 tandis que la seconde concerne les connexions IPv4

Maintenant, nous allons modifier chaque directive pour inclure un http2 drapeau comme indiqué

Cela va demander à Nginx d'utiliser HTTP/2 sur les navigateurs pris en charge

Enregistrez le fichier de configuration et quittez votre éditeur.

Ensuite, ouvrez /etc/nginx/sites-available/default fichier et faites les mêmes modifications

Enregistrez et quittez l'éditeur de texte.

Juste pour vous assurer qu'il n'y a pas d'erreurs de syntaxe dans l'un des fichiers Nginx, exécutez la commande ci-dessous

$ sudo nginx -t

Sortie

Étape 2 :Purger les anciens chiffrements non sécurisés

Pour que HTTP/2 fonctionne comme prévu, nous devons éviter d'utiliser des chiffrements anciens et non sécurisés qui figuraient sur la liste noire HTTP/2. Les suites de chiffrement sont des algorithmes cryptographiques qui dictent la façon dont le trafic doit être chiffré.

Si certbot a été utilisé pour obtenir les certificats, alors les chiffrements dans le chemin /etc/letsencrypt/options-ssl-nginx.conf ne sont pas assez sécurisés pour HTTP/2. Cependant, la modification de ce fichier ne causera que des erreurs et empêchera certbot d'appliquer les mises à jour. Cela signifie que nous devons spécifier notre liste de chiffrements et demander à Nginx d'ignorer le fichier

Ouvrez le fichier de configuration du bloc de serveur de domaine de votre Nginx

$ vim /etc/nginx/sites-available/crazytechgeek.info

Commentez cette ligne

# include /etc/letsencrypt/options-ssl-nginx.conf;

Sous cette ligne, ajoutez la ligne ci-dessous pour définir les chiffrements autorisés

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Enregistrez le fichier et quittez l'éditeur de texte

Si un certificat auto-attribué a été utilisé, ou un certificat tiers, alors ouvrez le fichier

/etc/nginx/snippets/ssl-params.conf 
$ sudo vim /etc/nginx/snippets/ssl-params.conf

Localisez la ligne comme indiqué ci-dessous

...
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
...

Modifiez le fichier en conséquence comme indiqué ci-dessous


...
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

Enfin, enregistrez et quittez le fichier de configuration

Vérifiez à nouveau s'il y a des erreurs de configuration Nginx

$ sudo nginx -t

Si tout s'est bien passé, vous devriez voir la sortie ci-dessous comme indiqué précédemment

Redémarrez Nginx

$ sudo systemctl reload nginx

Dans l'étape suivante, nous allons tester si notre serveur peut héberger des pages HTTP/2

Étape 3 - Tester si HTTP/2 est activé

Testons maintenant si HTTP est en cours d'exécution et activé sur notre serveur Web Nginx
Dans votre terminal, exécutez la commande ci-dessous

curl -I -L https://your_domain

Dans notre cas, ce sera

curl -I -L https://crazytechgeek.info

Sortie

Vous pouvez également vérifier HTTP/2 en ouvrant les outils de développement Google en appuyant sur

Ctrl + Shift + I 

Ensuite, cliquez sur Network Tab.

Dans le Protocol colonne, assurez-vous de trouver l'étiquette h2

Étape 4 :Déploiement de la sécurité de transport HTTP Strict

Enfin, même si nous savons très clairement que notre serveur peut rediriger les requêtes HTTP vers HTTPS, nous souhaitons activer HSTS HTTP Strict Transport Security pour éliminer ces redirections. Si un navigateur tombe sur un en-tête HSTS, il n'essaiera pas de se reconnecter au serveur pendant un certain temps. Le service informatique n'échangera des données que via le protocole HTTPS sécurisé et crypté.

Pour ce faire, ouvrez le fichier de configuration Nginx

$ vim /etc/nginx/nginx.conf

Ajoutez la ligne ci-dessous

add_header Strict-Transport-Security "max-age=15768000" always;

max-age est défini en secondes

Si votre site a des sous-domaines et que vous souhaitez appliquer HSTS à chacun d'eux, ajoutez le includeSubDomains drapeau à la fin de la ligne

add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

Enregistrez et quittez le fichier de configuration.

Comme toujours, vérifiez s'il y a des erreurs

$ sudo nginx -t


Enfin, redémarrez Nginx

$ sudo systemctl restart nginx

Conclusion

À ce stade, votre serveur Nginx sert maintenant des pages HTTP/2.
Vous pouvez également visiter https://tools.keycdn.com/http2-test pour tester le statut HTTP/2 de votre site comme indiqué

Alternativement, vous pouvez également visiter ce site

https://http2.pro/

Pour des résultats plus détaillés, utilisez

https://www.ssllabs.com/ssltest/


Linux
  1. Comment installer le serveur HTTP Git avec Nginx sur Ubuntu 16.04

  2. Comment installer le serveur HTTP Git avec Nginx sur Ubuntu 20.04

  3. Comment configurer Nginx en tant que proxy inverse sur Ubuntu 20.04

  4. Comment configurer Apache avec HTTP/2 sur Ubuntu 16.04

  5. Comment configurer Nginx avec la prise en charge HTTP/2 sur Debian 9

Comment installer NGINX sur Ubuntu 20.04

Comment configurer la synchronisation de l'heure avec NTP sur Ubuntu 18.04

Comment configurer un serveur Seafile avec Nginx sur Ubuntu 18.04

Comment configurer un serveur FTP avec ProFTPD dans Ubuntu 18.04

Comment configurer un serveur de messagerie avec Modoboa sur Ubuntu 20.04

Comment activer HTTP/2 avec Apache dans Ubuntu