Comment installer Nginx sur Debian 10

Introduction

Nginx est un serveur web gratuit et open-source utilisé pour héberger des sites Web et des applications de toutes tailles. Le logiciel est connu pour son faible impact sur les ressources mémoire, sa grande évolutivité et son architecture modulaire et événementielle qui peut offrir des performances sécurisées et prévisibles. Plus qu’un simple serveur web, Nginx fonctionne également comme un répartiteur de charge, un cache HTTP et un proxy inverse.

Dans ce guide, vous allez installer Nginx sur votre serveur Debian 10.

Prérequis

Avant de commencer ce guide, vous devez disposer d’un utilisateur régulier, non root, avec des privilèges sudo configurés sur votre serveur. Vous devez également disposer d’un pare-feu actif. Vous pouvez apprendre à configurer cela en suivant notre guide de configuration initiale du serveur pour Debian 10.

Étape 1 – Installation de Nginx

Nginx est disponible dans les dépôts de logiciels par défaut de Debian, ce qui permet de l’installer à l’aide des outils de gestion de paquets conventionnels.

Tout d’abord, mettez à jour votre index local de paquets pour refléter les derniers changements en amont :

  1. sudo apt update

Ensuite, installez le paquet nginx :

  1. sudo apt install nginx

Confirmez l’installation en entrant O, puis appuyez sur Entrée pour procéder. apt installera alors Nginx ainsi que toutes les dépendances nécessaires sur votre serveur.

Étape 2 – Ajustement du pare-feu

Avant de tester Nginx, il est nécessaire de modifier les paramètres du pare-feu pour permettre l’accès extérieur aux ports web par défaut. En supposant que vous avez suivi les instructions dans les prérequis, vous devriez avoir un pare-feu UFW configuré pour restreindre l’accès à votre serveur.

Pendant l’installation, Nginx s’enregistre auprès de UFW pour fournir quelques profils d’application qui peuvent être utilisés pour autoriser ou désactiver l’accès à Nginx via le pare-feu.

Listez les profils d’application ufw en tapant :

  1. sudo ufw app list

Vous devriez obtenir une liste des profils d’application :

Output
Available applications: ... Nginx Full Nginx HTTP Nginx HTTPS ...

Comme vous pouvez le voir, il y a trois profils disponibles pour Nginx :

  • Nginx complet : Ce profil ouvre à la fois le port 80 (trafic web normal, non crypté) et le port 443 (trafic crypté TLS/SSL)
  • Nginx HTTP : Ce profil ouvre uniquement le port 80 (trafic web normal, non crypté)
  • Nginx HTTPS: Ce profil n’ouvre que le port 443 (trafic chiffré TLS/SSL)

Il est recommandé d’activer le profil le plus restrictif qui permettra toujours le trafic que vous avez configuré. Étant donné que vous n’avez pas encore configuré TLS/SSL pour votre serveur dans ce guide, vous devrez uniquement autoriser le trafic pour HTTP sur le port 80.

Vous pouvez l’activer en tapant :

  1. sudo ufw allow 'Nginx HTTP'

Vous pouvez vérifier le changement en tapant :

  1. sudo ufw status

Ce qui apparaît sont les flux de trafic HTTP autorisés dans la sortie :

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Étape 3 – Vérification de votre serveur Web

À la fin du processus d’installation, Debian 10 démarre Nginx. Le serveur Web devrait déjà être opérationnel.

Vous pouvez vérifier avec le système d’initialisation systemd pour vous assurer que le service fonctionne en tapant :

  1. systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-06-28 18:42:58 UTC; 49s ago Docs: man:nginx(8) Main PID: 2729 (nginx) Tasks: 2 (limit: 1167) Memory: 7.2M CGroup: /system.slice/nginx.service ├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2730 nginx: worker process

Cette sortie révèle que le service a démarré avec succès. Cependant, la meilleure façon de le tester est de demander réellement une page à Nginx.

Vous pouvez accéder à la page d’accueil par défaut de Nginx pour confirmer que le logiciel fonctionne correctement en naviguant vers l’adresse IP de votre serveur. Si vous ne connaissez pas l’adresse IP de votre serveur, vous pouvez taper ceci à l’invite de commande de votre serveur :

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Vous obtiendrez quelques lignes en retour. Vous pouvez essayer chacune dans votre navigateur web pour voir si elles fonctionnent.

Lorsque vous avez l’adresse IP de votre serveur, entrez-la dans la barre d’adresse de votre navigateur :

http://your_server_ip

La page d’accueil par défaut de Nginx devrait apparaître dans votre navigateur Web :

Cette page est incluse avec Nginx pour vous montrer que le serveur fonctionne correctement.

Étape 4 – Gestion du processus Nginx

Maintenant que votre serveur Web est opérationnel, vous pouvez examiner quelques commandes de gestion de base.

Pour arrêter votre serveur Web, tapez :

  1. sudo systemctl stop nginx

Pour démarrer le serveur Web lorsqu’il est arrêté, tapez :

  1. sudo systemctl start nginx

Pour arrêter puis redémarrer le service, tapez :

  1. sudo systemctl restart nginx

Si vous effectuez des modifications de configuration, Nginx peut souvent recharger sans interrompre les connexions. Pour ce faire, tapez :

  1. sudo systemctl reload nginx

Par défaut, Nginx est configuré pour démarrer automatiquement lorsque le serveur démarre. Si ce n’est pas ce que vous voulez, vous pouvez désactiver ce comportement en tapant :

  1. sudo systemctl disable nginx

Pour réactiver le service au démarrage, vous pouvez taper :

  1. sudo systemctl enable nginx

Étape 5 – Configuration des blocs serveur (facultatif)

Lorsque vous utilisez le serveur web Nginx, les blocs serveur (similaires aux hôtes virtuels dans Apache) peuvent être utilisés pour encapsuler les détails de configuration et héberger plusieurs domaines sur un seul serveur. Dans les commandes suivantes, remplacez votre_domaine par votre propre nom de domaine. Pour en savoir plus sur la configuration d’un nom de domaine avec DigitalOcean, consultez notre introduction à DigitalOcean DNS.

Nginx sur Debian 10 a un bloc serveur activé par défaut qui est configuré pour servir des documents à partir d’un répertoire situé à /var/www/html. Bien que cela fonctionne bien pour un seul site, cela peut devenir ingérable si vous hébergez plusieurs sites. Au lieu de modifier /var/www/html, créez une structure de répertoires à l’intérieur de /var/www pour le site web votre_domaine, en laissant /var/www/html en place comme répertoire par défaut à servir si une demande client ne correspond à aucun autre site.

Créez le répertoire pour votre_domaine comme suit, en utilisant le drapeau -p pour créer les répertoires parents nécessaires:

  1. sudo mkdir -p /var/www/your_domain/html

Ensuite, attribuez la propriété du répertoire avec la variable d’environnement $USER, qui devrait faire référence à votre utilisateur système actuel:

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

Les permissions de votre racine web devraient être correctes si vous n’avez pas modifié la valeur de votre umask, mais vous pouvez vous en assurer en tapant:

  1. sudo chmod -R 755 /var/www/your_domain

Ensuite, créez une page index.html d’exemple en utilisant nano ou votre éditeur de texte préféré:

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

À l’intérieur, ajoutez le HTML d’exemple suivant:

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

Enregistrez et fermez le fichier lorsque vous avez terminé. Dans nano, vous pouvez le faire en appuyant sur CTRL + X, puis Y, et ensuite ENTER.

Pour que Nginx serve ce contenu, vous devez créer un bloc serveur avec les directives correctes qui pointent vers votre propre répertoire web. Au lieu de modifier directement le fichier de configuration par défaut, créez-en un nouveau à l’emplacement /etc/nginx/sites-available/votre_domaine:

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

Ajoutez le bloc de configuration suivant, similaire à celui par défaut, mais mis à jour pour votre nouveau répertoire et nom de domaine:

/etc/nginx/sites-available/your_domain
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;
        }
}

Remarquez la configuration root mise à jour vers votre nouveau répertoire et le server_name vers votre nom de domaine. N’oubliez pas de remplacer votre_domaine par votre véritable nom de domaine.

Ensuite, activez ce bloc serveur en créant un lien symbolique vers votre fichier de configuration personnalisé à l’intérieur du répertoire sites-enabled, que Nginx lit au démarrage:

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

Votre serveur dispose désormais de deux blocs serveurs activés et configurés pour répondre aux demandes en fonction de leurs directives listen et server_name (vous pouvez en savoir plus sur la manière dont Nginx traite ces directives ici):

  • votre_domaine: Répondra aux demandes pour votre_domaine et www.votre_domaine.
  • default: Répondra à toutes les demandes sur le port 80 qui ne correspondent pas aux deux autres blocs.

Pour éviter un éventuel problème de mémoire de hachage de seau qui peut survenir en ajoutant des noms de serveurs supplémentaires à votre configuration, il est nécessaire d’ajuster une seule valeur dans le fichier /etc/nginx/nginx.conf. Ouvrez le fichier :

  1. sudo nano /etc/nginx/nginx.conf

Trouvez la directive server_names_hash_bucket_size et supprimez le symbole # pour décommenter la ligne :

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, testez pour vous assurer qu’il n’y a pas d’erreurs de syntaxe dans aucun de vos fichiers Nginx :

  1. sudo nginx -t

S’il n’y a pas de problèmes, voici la sortie attendue :

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

Une fois que votre test de configuration est passé, redémarrez Nginx pour activer vos modifications :

  1. sudo systemctl restart nginx

Nginx devrait maintenant servir votre nom de domaine. Vous pouvez tester ceci en naviguant vers http://your_domain. Le HTML personnalisé que vous avez créé dans le dossier /var/www/your_domain/html/index.html devrait s’afficher ici :

Étape 6 – Se familiariser avec les fichiers et répertoires Nginx importants

Maintenant que vous savez comment gérer le service Nginx lui-même, prenez un peu de temps pour vous familiariser avec quelques répertoires et fichiers importants.

Contenu

  • /var/www/html : Le contenu web réel, qui par défaut se compose uniquement de la page Nginx par défaut que vous avez vue précédemment, est servi à partir du répertoire /var/www/html. Cela peut être modifié en modifiant les fichiers de configuration de Nginx.

Configuration du serveur

  • /etc/nginx : Le répertoire de configuration de Nginx. Tous les fichiers de configuration de Nginx résident ici.
  • /etc/nginx/nginx.conf : Le fichier de configuration principal de Nginx. Celui-ci peut être modifié pour apporter des modifications à la configuration globale de Nginx.
  • /etc/nginx/sites-available/ : Le répertoire où les blocs serveur par site peuvent être stockés. Nginx n’utilisera pas les fichiers de configuration trouvés dans ce répertoire à moins qu’ils ne soient liés au répertoire sites-enabled. En général, toute la configuration des blocs serveur est faite dans ce répertoire, puis activée en les liant à l’autre répertoire.
  • /etc/nginx/sites-enabled/ : Le répertoire où les blocs serveur par site activés sont stockés. En général, ceux-ci sont créés en liant les fichiers de configuration trouvés dans le répertoire sites-available.
  • /etc/nginx/snippets : Ce répertoire contient des fragments de configuration qui peuvent être inclus ailleurs dans la configuration de Nginx. Les segments de configuration potentiellement répétables sont de bons candidats pour être refactorisés en fragments.

Journaux du serveur

  • /var/log/nginx/access.log : Chaque requête à votre serveur web est enregistrée dans ce fichier journal à moins que Nginx ne soit configuré autrement.
  • /var/log/nginx/error.log : Toutes les erreurs de Nginx seront enregistrées dans ce journal.

Conclusion

Maintenant que vous avez installé votre serveur web, vous avez de nombreuses options pour le type de contenu que vous pouvez servir et les technologies que vous pouvez utiliser pour créer une expérience plus riche pour vos utilisateurs.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10