GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer Nginx avec Let's Encrypt TLS/SSL sur Ubuntu 20.04

NGINX est un logiciel serveur HTTP open-source et gratuit. En plus de ses capacités de serveur HTTP, NGINX peut également fonctionner comme un serveur proxy pour le courrier électronique (IMAP, POP3 et SMTP) et un proxy inverse et un équilibreur de charge pour les serveurs HTTP, TCP et UDP. L'objectif derrière NGINX était de créer le serveur Web le plus rapide du marché, et le maintien de cette excellence est toujours un objectif central du projet Nginx. NGINX bat constamment Apache et d'autres serveurs dans les benchmarks mesurant les performances des serveurs Web et est désormais le serveur Web le plus utilisé selon W3Tech.

Dans le tutoriel suivant, vous apprendrez à installer Nginx sur Ubuntu 20.04 LTS en utilisant le référentiel Ubuntu par défaut ou l'alternative PPA par Ondřej Surý avec un certificat TLS/SSL gratuit de Let's Encrypt.

Prérequis

  • OS recommandé : Ubuntu 20.04 ou supérieur
  • Compte utilisateur : Un compte utilisateur avec un accès sudo ou root.

Mise à jour du système d'exploitation

Mettez à jour votre Ubuntu système d'exploitation pour s'assurer que tous les packages existants sont à jour :

sudo apt update && sudo apt upgrade

Accès racine ou sudo

Par défaut, le compte créé avec Ubuntu donnait le statut sudo. Néanmoins, supposons que vous deviez fournir un accès sudo/root à des comptes supplémentaires. Dans ce cas, vous devez soit avoir accès au mot de passe root utiliser la commande su ou visitez notre tutoriel sur Comment ajouter un utilisateur à Sudoers sur Ubuntu.

Installer Nginx

Méthode 1. Installer Nginx Stable à partir du référentiel Ubuntu

La première méthode consiste à installer Nginx à partir des référentiels par défaut d'Ubuntu, et ces versions se sont avérées stables et sécurisées. Si vous devez exécuter un serveur Web principal ou un proxy inverse, l'installation des packages du référentiel Ubuntu est souvent recommandée.

Pour installer Nginx, exécutez la commande suivante.

sudo apt install nginx

Exemple de résultat :

Tapez "O," puis appuyez sur la « TOUCHE ENTRÉE » pour poursuivre l'installation.

Ensuite, vérifiez la version de build et si l'installation a réussi.

sudo nginx -v

Exemple de résultat :

nginx version: nginx/1.18.0

Méthode 2. Installer la dernière écurie ou ligne principale Nginx d'Ondřej Surý PPA

Alternativement, au lieu d'installer la version stable Nginx par défaut à partir du référentiel d'Ubuntu 20.04, vous pouvez installer Nginx Stable ou Mainline à l'aide du PPA d'Ondřej Surý, le responsable PHP pour Debian.

Installez l'un des PPA suivants avec la commande suivante :

Installez la dernière version de Nginx (STABLE) :

sudo add-apt-repository ppa:ondrej/nginx-stable -y && sudo apt update

Installez la dernière version de Nginx (MAINLINE) :

sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update

Maintenant que vous avez installé le PPA et mis à jour la liste des référentiels, installez Nginx avec ce qui suit :

sudo apt install nginx-core nginx-common nginx nginx-full

Exemple de résultat :

Tapez "O," puis appuyez sur la « TOUCHE ENTRÉE » pour poursuivre l'installation.

Ensuite, vérifiez la version de build et si l'installation a réussi.

sudo nginx -v

Exemple de sortie (de Mainline) :

nginx version: nginx/1.18.0

Vérifiez maintenant que le dernier Nginx du référentiel Ondřej Surý a été installé à l'aide de la commande apt-cache policy . Remarque, l'exemple de didacticiel installé Nginx Mainline :

apt-cache policy nginx

Exemple de sortie pour Nginx Mainline :

Notez que vous pouvez être invité à conserver ou à remplacer votre /etc/nginx/ existant nginx.conf fichier de configuration lors de l'installation si Nginx était installé précédemment. Il est recommandé de conserver votre fichier de configuration actuel en appuyant sur (n) . Une copie sera faite quelle que soit la version du responsable, et vous pourrez également vérifier cela à l'avenir.

Vous remarquerez que des modules supplémentaires seront disponibles dans cette version, notamment le support brotli. Pour installer brotli , suivez les étapes ci-dessous.

Ouvrez votre nginx.conf fichier de configuration :

nano /etc/nginx/nginx.conf

Ajoutez maintenant les lignes supplémentaires avant dans le HTTP{} rubrique :

brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
   application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
   application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
   font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
   image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;

Le brotli_comp_level peut être défini entre 1 (le plus bas) et 11 (le plus élevé) . En règle générale, la plupart des serveurs se trouvent au milieu, mais si votre serveur est un monstre, réglez-le sur 11 et surveillez les niveaux d'utilisation du processeur.

Ensuite, testez pour vous assurer que les modifications fonctionnent correctement avant de les mettre en ligne :

sudo nginx -t

Si les modifications fonctionnent correctement, vous devriez voir ce qui suit :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Appliquez maintenant les modifications en redémarrant votre serveur :

sudo systemctl restart nginx
sudo systemctl status nginx

Exemple de résultat :

Configuration UFW

Par défaut, UFW est installé sur Ubuntu 20.04. Si vous utilisez UFW ou souhaitez une vue plus claire de l'exécution d'un pare-feu, utilisez les informations ci-dessous pour configurer UFW pour Nginx.

Si UFW n'est pas installé, réinstallez le pare-feu à l'aide de la commande suivante :

sudo apt install ufw -y

Ensuite, activez UFW avec la commande suivante.

sudo ufw enable

Par défaut, toutes les connexions entrantes sont désormais bloquées et toutes les connexions sortantes sont autorisées.

Ensuite, découvrez les applications que vous avez installées en saisissant ce qui suit.

sudo ufw app list

Exemple de sortie (notez qu'une longue liste d'autres applications apparaîtra également) :

 Available applications:
   Nginx Full
   Nginx HTTP
   Nginx HTTPS

Ensuite, vous pouvez activer Nginx en HTTP (port 80), HTTPS (port 443) ou complet, y compris toutes les options.

HTTP (port 80) :

sudo ufw allow 'Nginx HTTP'

HTTP (port 443) :

sudo ufw allow 'Nginx HTTPS'

HTTP et HTTPS (complet) :

sudo ufw allow 'Nginx FULL'

Dans le tutoriel, "Nginx (Full)" a été activé.

Exemple de résultat :

 Rules updated
 Rules updated (v6)

Confirmez que les règles de pare-feu sont actives avec la commande suivante.

sudo ufw status

Vous verrez les règles répertoriées dans la sortie.

 Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 Nginx Full (v6)          ALLOW       Anywhere (v6) 

Une fois UFW configuré, vérifiez que vous pouvez voir la page d'accueil Nginx dans votre navigateur Internet.

http://your_server_ip

Si tout fonctionne bien, vous devriez arriver sur la page suivante :

Configurer le serveur Nginx

Vous aurez besoin d'avoir l'adresse IP du serveur prête pour la configuration. La façon la plus simple de le faire est avec ce qui suit.

Rechercher l'adresse IP du serveur

Vous aurez besoin d'avoir l'adresse IP du serveur prête pour la configuration. La façon la plus simple de le faire est avec ce qui suit.

curl -4 icanhazip.com

Exemple de résultat :

XXX.XXX.XXX.XXX IP address

Si une erreur survient, il est fort probable que vous deviez installer le package curl sur votre système. Exécutez rapidement cette commande :

sudo apt install curl -y

Configurer le répertoire source du site

Nginx blocs de serveur (similaire aux hôtes virtuels dans Apache) peut encapsuler les détails de configuration et héberger plusieurs domaines à partir d'un seul serveur. Dans le didacticiel, vous configurerez un domaine appelé example.com , mais vous devez remplacer ceci par votre nom de domaine .

Lorsque vous installez Nginx, il est créé avec un répertoire www préinstallé. L'emplacement se trouve à /var/www/html/ .

Tout d'abord, créez le répertoire, pour example.com , comme suit, en utilisant l'indicateur "-p" pour créer les répertoires parents nécessaires :

sudo mkdir -p /var/www/example.com/html

Deuxièmement, vous devrez attribuer le propriétaire du répertoire.

sudo chown -R $USER:$USER /var/www/your_domain/html

Troisièmement, attribuez les autorisations du répertoire, afin que le propriétaire lise, écrive et exécute les fichiers tout en n'accordant que des autorisations de lecture et d'exécution aux groupes et autres. Vous pouvez saisir la commande suivante :

sudo chmod -R 755 /var/www/your_domain

Configurer la page HTML de test

Quatrièmement, créez une page de test que vous utiliserez pour confirmer que votre serveur Nginx est opérationnel.

nano /var/www/your_domain/html/index.html

À l'intérieur de l'éditeur nano et du nouveau fichier que vous avez créé. Entrez ce qui suit.

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

Enregistrez le fichier CTRL+O, puis quittez CTRL+X .

Créer un bloc de serveur Nginx

Maintenant, vous allez créer le bloc serveur pour votre site Web. Nous allons créer un nouveau bloc de serveur comme suit.

sudo nano /etc/nginx/sites-available/your_domain.conf

Vous pouvez coller l'exemple de code suivant dans le bloc. Ceci n'est qu'un exemple HTTP uniquement pour les tests de base.

server {
 listen 80;
 listen [::]:80;

 root /var/www/your_domain/html;

  index index.html index.htm index.nginx-debian.html;
  server_name your_domain www.your_domain;

 location / {
  try_files $uri $uri/ =404;
 }
}

L'exemple montre que votre serveur écoute deux noms de serveur, "votre_domaine" sur le port 80.

Vous devrez remplacer le répertoire racine par le nom/l'emplacement du répertoire racine que vous créez.

Activer le blocage du serveur Nginx

Pour activer les blocs de serveur Nginx, vous devez lier les fichiers de configuration de sites-available à sites-enabled dans votre répertoire Nginx. Cela peut être fait avec la commande ln -s comme suit.

sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

Configuration finale et test de fonctionnement

Dans la dernière étape, vous devrez ouvrir votre fichier nginx.conf par défaut fichier.

sudo nano /etc/nginx/nginx.conf

Et décommentez la ligne suivante.

server_names_hash_bucket_size 64;

La taille du compartiment de hachage du nom du serveur est modifiée, car des problèmes surviennent parfois lors de l'ajout de serveurs supplémentaires.

Ensuite, testez votre Nginx pour vous assurer qu'il fonctionne avant de redémarrer correctement.

sudo nginx -t

Le résultat devrait être s'il n'y a pas d'erreurs dans la syntaxe :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si vous obtenez la sortie ok suivante, redémarrez le serveur Nginx pour que les modifications aient lieu.

sudo systemctl restart nginx

Ouvrez maintenant votre Navigateur Internet et saisissez le nom de domaine du serveur . Vous devriez voir que votre bloc de serveur est en ligne.

Sécuriser Nginx avec le certificat gratuit Let's Encrypt SSL

Idéalement, vous voudriez exécuter votre Nginx sur HTTPS en utilisant un certificat SSL . La meilleure façon de le faire est d'utiliser Let's Encrypt, une autorité de certification gratuite, automatisée et ouverte gérée par le Groupe de recherche sur la sécurité Internet (ISRG) à but non lucratif .

Tout d'abord, installez le package certbot comme suit :

sudo apt install python3-certbot-nginx -y

Une fois installé, exécutez la commande suivante pour lancer la création de votre certificat :

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Il s'agit de la configuration idéale qui inclut les redirections HTTPS 301 forcées, l'en-tête Strict-Transport-Security et l'agrafage OCSP. Assurez-vous simplement d'adapter l'adresse e-mail et le nom de domaine à vos besoins.

Maintenant, votre URL sera HTTPS://www.example.com au lieu de HTTP://www.example.com .

Remarque, si vous utilisez l'ancienne URL HTTP , il redirigera automatiquement vers HTTPS .

Comment accéder aux journaux du serveur Nginx

Répertoire des journaux Nginx

Par défaut, tous les journaux d'accès/d'erreurs NGINX, sauf si vous les avez modifiés, se trouvent dans le répertoire des journaux, que la commande suivante peut afficher.

Tout d'abord, accédez au répertoire des journaux et répertoriez les fichiers :

cd /var/log/nginx && ls -l

Vous devriez trouver les fichiers d'accès et d'erreur suivants :

Journal d'accès :

/var/log/nginx/access.log

Journal des erreurs :

/var/log/nginx/error.log

Pour afficher les journaux en temps réel dans votre terminal à l'aide de la commande sudo tail -f /location/of/log path.

Exemple :

sudo tail -f /var/log/nginx/access.log

Une autre option consiste à imprimer le dernier nombre X de lignes. Par exemple, X est remplacé par 30 pour imprimer 30 lignes en ajoutant les drapeaux -n 30 .

sudo tail -f /var/log/nginx/access.log -n 30

Ce ne sont là que quelques exemples de lecture de journaux.

Comment configurer la rotation des journaux Nginx

Nginx installe automatiquement la rotation des journaux et la configure par défaut, qui consiste à effectuer une rotation quotidienne. Vous pouvez modifier ces paramètres en accédant au fichier comme indiqué ci-dessous.

sudo nano /etc/nginx/logrotate.d/nginx

Ensuite, vous verrez la même structure de fichiers sinon similaire. Vous pouvez modifier le contenu ici. La plupart du temps, vous pouvez modifier le nombre de journaux à conserver ou passer de quotidien à hebdomadaire. Cela devrait être laissé par défaut, sauf si vous avez des besoins spécifiques en matière de journalisation pour des logiciels tels que la surveillance fail2ban ou similaire.

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

Les principaux paramètres que vous souhaiterez probablement modifier sont les suivants :

  • Tous les jours – Cela peut être changé en Hebdomadaire, Mensuel. Cela doit être conservé quotidiennement, sinon il sera difficile de parcourir le fichier journal.
  • Rotation 14 – C'est le nombre de journaux à conserver et à supprimer, donc au maximum il n'y a que 14 journaux, si vous ne voulez conserver que 7 jours de journaux, changez-le en 7.

Il est recommandé de ne toucher à aucun autre paramètre à moins que vous ne sachiez ce que vous faites.

Comment mettre à jour Nginx

Nginx sera mis à jour par défaut lorsqu'une nouvelle version arrivera dans les référentiels. Avant la mise à niveau, il est toujours conseillé de sauvegarder votre répertoire Nginx ou, à tout le moins, le nginx.conf dossier. Vous pouvez faire l'un ou l'autre avec la commande suivante.

Sauvegarder nginx.conf (fortement recommandé) :

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Sauvegardez l'intégralité de votre dossier Nginx si vous préférez :

sudo cp /etc/nginx/ /etc/nginx-bkup

Ensuite, exécutez la commande de mise à jour standard.

sudo apt update

Si une mise à niveau est disponible, exécutez la mise à niveau.

sudo apt upgrade 

Vous pouvez être invité à le faire lors d'une mise à niveau ou d'une installation, mais il est essentiel de le faire manuellement au préalable. Pour les grandes configurations Nginx de plusieurs sites, la sauvegarde sur quelque chose comme Github ou Gitlab serait encore plus bénéfique.


Ubuntu
  1. Comment installer Nextcloud avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04 LTS

  2. Comment installer Magento 2 avec Nginx et Lets Encrypt SSL sur Ubuntu 20.04 LTS

  3. Comment installer MediaWiki avec Nginx sur Ubuntu 16.04

  4. Comment installer Magento avec Nginx sur Ubuntu 15.10

  5. Comment installer Let's Encrypt SSL sur Ubuntu 18.04 avec Nginx

Comment installer Nginx avec Let's Encrypt SSL sur Fedora 35

Comment installer Let's Encrypt SSL sur Ubuntu avec Apache

Comment installer Let's Encrypt SSL avec Nginx sur Ubuntu 16.04 LTS

Comment installer Let's Encrypt SSL pour Nginx sur Ubuntu 18.04 LTS

Comment installer Nginx avec Let's Encrypt SSL sur Ubuntu 20.04 LTS

Comment installer Apache avec Let's Encrypt SSL sur Ubuntu 20.04 LTS