GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer Nginx avec Let's Encrypt TLS/SSL sur Debian 11 Bullseye

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 didacticiel suivant, vous apprendrez à installer Nginx sur Debian 11 Bullseye en utilisant le référentiel Debian par défaut ou le référentiel alternatif d'Ondřej Surý avec un certificat TLS/SSL gratuit de Let's Encrypt.

Prérequis

  • OS recommandé : Debian 11 Bullseye
  • Compte utilisateur : Un compte utilisateur avec des privilèges sudo ou accès root (commande su) .

Mise à jour du système d'exploitation

Mettez à jour votre Debian 11 Bullseye 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, lorsque vous créez votre compte au démarrage avec Debian par rapport aux autres distributions, elle ne reçoit pas automatiquement le statut sudoers. 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 Debian.

Installer Nginx

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

La première méthode consiste à installer Nginx à partir des référentiels par défaut de Debian, 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 Debian 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 version stable ou principale de Nginx à partir du référentiel Ondřej Surý

Alternativement, au lieu d'installer la version stable par défaut de Nginx à partir du référentiel Debian 11, vous pouvez installer Nginx Stable ou Mainline en utilisant le référentiel d'Ondřej Surý, le mainteneur PHP de Debian.

Pour importer le référentiel principal :

curl -sSL https://packages.sury.org/nginx-mainline/README.txt | sudo bash -x

Pour importer un dépôt stable :

curl -sSL https://packages.sury.org/nginx/README.txt | sudo bash -x

Mettez à jour votre référentiel pour refléter la nouvelle modification :

sudo apt update

Maintenant que vous avez installé le dépôt Nginx 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 " Y", puis appuyez sur la "ENTER KEY" pour continuer et terminer l'installation.

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. 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
systemctl status nginx

Exemple de résultat :

Facultatif. Configuration UFW

Par défaut, UFW n'est pas installé sur Debian 11 Bullseye, contrairement à d'autres distributions comme Ubuntu. Toutefois, 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.

Pour installer UFW, utilisez 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

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.

Activé le bloc 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 le drapeau -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.


Debian
  1. Installer Lets Encrypt and Secure Nginx avec SSL/TLS dans Debian 9

  2. Comment installer Drupal 9 avec Nginx et Lets Encrypt SSL sur Debian 10

  3. Comment installer DokuWiki avec Lets Encrypt SSL sur Debian 11

  4. Comment installer AbanteCart avec Nginx et SSL sur Debian 11

  5. Comment installer Let's Encrypt SSL avec Apache sur Debian 11

Comment installer WonderCMS avec Nginx sur Debian 11 Bullseye

Comment installer et configurer Apache avec Let's Encrypt TLS/SSL sur Debian 11 Bullseye

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

Comment installer phpMyAdmin avec Nginx sur Debian 11

Comment installer Let's Encrypt SSL avec Nginx sur CentOS 7

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