Introduction
Nginx est l’un des serveurs web les plus populaires au monde et est responsable de l’hébergement de certains des sites les plus grands et les plus fréquentés sur Internet. C’est un choix léger qui peut être utilisé soit comme serveur web, soit comme proxy inverse.
Dans ce guide, vous examinerez comment installer Nginx sur votre serveur Rocky Linux 9, ajuster le pare-feu, gérer le processus Nginx et configurer des blocs serveurs pour héberger plusieurs domaines à partir d’un seul serveur.
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 pouvez apprendre à configurer un compte utilisateur régulier en suivant notre Guide de configuration initiale du serveur pour Rocky Linux 9.
Vous voudrez également éventuellement avoir enregistré un nom de domaine avant de terminer les dernières étapes de ce tutoriel. Pour en savoir plus sur la configuration d’un nom de domaine avec DigitalOcean, veuillez vous référer à notre Introduction à DigitalOcean DNS.
Lorsque vous avez un compte disponible, connectez-vous en tant que votre utilisateur non root pour commencer.
Étape 1 – Installation de Nginx
Étant donné que Nginx est disponible dans les dépôts par défaut de Rocky, vous pouvez l’installer avec une seule commande, en utilisant le gestionnaire de paquets dnf
.
Installez le paquet nginx
avec la commande dnf install
:
- sudo dnf install nginx
Lorsque vous y êtes invité, saisissez y
pour confirmer que vous souhaitez installer nginx
. Ensuite, dnf
installera Nginx et toutes les dépendances nécessaires sur votre serveur.
Une fois l’installation terminée, exécutez les commandes suivantes pour activer et démarrer le serveur web:
- sudo systemctl enable nginx
- sudo systemctl start nginx
Cela permettra à Nginx de redémarrer automatiquement chaque fois que votre serveur redémarre. Votre nouveau serveur web devrait maintenant être opérationnel, mais avant de le tester, vous devrez probablement apporter une modification à la configuration de votre pare-feu.
Étape 2 – Ajustement du pare-feu
Si vous avez activé le pare-feu firewalld
dans le cadre du guide d’installation initial du serveur pour Rocky Linux 9, vous devrez ajuster les paramètres du pare-feu afin d’autoriser les connexions externes sur votre serveur web Nginx, qui s’exécute sur le port 80
par défaut.
Exécutez la commande suivante pour activer définitivement les connexions HTTP sur le port 80
:
- sudo firewall-cmd --permanent --add-service=http
Pour vérifier que le service de pare-feu http
a été ajouté correctement, vous pouvez exécuter :
- sudo firewall-cmd --permanent --list-all
Vous verrez une sortie semblable à ceci :
Outputpublic
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Pour appliquer les modifications, vous devrez recharger le service de pare-feu :
- sudo firewall-cmd --reload
Votre serveur web devrait maintenant être accessible aux visiteurs externes.
Étape 3 – Vérification de votre serveur web
À ce stade, votre serveur web devrait être opérationnel.
Vous pouvez utiliser la commande systemctl status
pour vous assurer que le service est en cours d’exécution :
- systemctl status nginx
Output● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago
Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 18387 (nginx)
Tasks: 3 (limit: 10938)
Memory: 2.8M
CPU: 43ms
CGroup: /system.slice/nginx.service
├─18387 "nginx: master process /usr/sbin/nginx"
├─18388 "nginx: worker process"
└─18389 "nginx: worker process"
Comme confirmé par cette sortie, le service a démarré avec succès. Cependant, la meilleure façon de le tester est de demander effectivement 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 la trouver en utilisant l’outil icanhazip.com, qui vous donnera votre adresse IP publique telle que reçue d’un autre emplacement sur Internet :
- curl -4 icanhazip.com
Lorsque vous avez l’adresse IP de votre serveur, saisissez-la dans la barre d’adresse de votre navigateur :
http://your_server_ip
Vous devriez recevoir la page d’accueil par défaut de Nginx :
Si vous êtes sur cette page, votre serveur fonctionne correctement et est prêt à être géré.
Étape 4 – Gestion du processus Nginx
Maintenant que votre serveur web est opérationnel, examinons quelques commandes de gestion de service.
Pour arrêter votre serveur web, utilisez systemctl stop
:
- sudo systemctl stop nginx
Pour démarrer le serveur web lorsqu’il est arrêté, utilisez systemctl start
:
- sudo systemctl start nginx
Pour arrêter puis redémarrer le service, utilisez systemctl restart
:
- sudo systemctl restart nginx
Si vous effectuez uniquement des changements de configuration, Nginx peut souvent être rechargé sans interrompre les connexions. Pour ce faire, utilisez systemctl reload
:
- sudo systemctl reload nginx
Auparavant dans ce tutoriel, vous avez configuré Nginx pour démarrer automatiquement lorsque le serveur démarre. Vous pouvez désactiver ce comportement en utilisant systemctl disable
:
- sudo systemctl disable nginx
Pour réactiver le service au démarrage, vous pouvez taper :
- sudo systemctl enable nginx
Étape 5 – Se familiariser avec les fichiers et répertoires importants de Nginx
Maintenant que vous savez comment gérer le service Nginx, prenez quelques minutes pour vous familiariser avec quelques répertoires et fichiers importants.
Contenu
/usr/share/nginx/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/usr/share/nginx/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/conf.d/
: Ce répertoire contient des fichiers de configuration de blocs serveur, où vous pouvez définir les sites web hébergés dans Nginx. Une approche typique consiste à avoir chaque site web dans un fichier séparé qui porte le nom du domaine du site, tel queyour_domain.conf
.
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. Vous devriez maintenant être prêt à configurer le site pour héberger un ou plusieurs domaines.
Il est maintenant temps de configurer le site pour héberger un ou plusieurs domaines.
Étape 6 – Configuration des blocs serveur (optionnel)
Lors de l’utilisation du serveur web Nginx, des blocs serveur (similaires aux hôtes virtuels dans Apache) peuvent être utilisés pour organiser les détails de configuration et héberger plus d’un domaine à partir d’un seul serveur. Sur Rocky Linux 9, les blocs serveur sont définis dans des fichiers .conf
situés dans /etc/nginx/conf.d
. Nous allons configurer un domaine appelé votre_domaine
, mais vous devez le remplacer par votre propre nom de domaine.
Par défaut, Nginx sur Rocky Linux 9 est configuré pour servir des documents à partir d’un répertoire à /usr/share/nginx/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 /usr/share/nginx/html
, vous créerez une structure de répertoires dans /var/www
pour le site votre_domaine, laissant /usr/share/nginx/html
en place comme répertoire par défaut à servir si une requête client ne correspond à aucun autre site.
Créez le répertoire pour votre_domaine comme suit, en utilisant le drapeau -p
pour créer tous les répertoires parents nécessaires :
- sudo mkdir -p /var/www/your_domain/html
suivant, attribuez la propriété du répertoire avec la variable d’environnement $USER
, qui devrait faire référence à votre utilisateur système actuel :
- sudo chown -R $USER:$USER /var/www/your_domain/html
Maintenant, vous allez créer une page index.html
d’exemple pour tester la configuration du bloc serveur. L’éditeur de texte par défaut fourni avec Rocky Linux 9 est vi
. vi
est un éditeur de texte extrêmement puissant, mais il peut être quelque peu obscur pour les utilisateurs qui manquent d’expérience avec celui-ci. Vous voudrez peut-être installer un éditeur plus convivial tel que nano
pour faciliter la modification des fichiers de configuration sur votre serveur Rocky Linux 9 :
- sudo dnf install nano
Ensuite, créez une page index.html
d’exemple en utilisant nano
ou votre éditeur préféré :
- nano /var/www/your_domain/html/index.html
À l’intérieur, ajoutez le code HTML d’exemple suivant :
<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é. Si vous utilisez nano
, vous pouvez enregistrer et quitter en appuyant sur CTRL + X
, puis lorsque vous y êtes invité, appuyez sur Y
et ensuite sur Entrée.
Pour que Nginx serve ce contenu, vous devrez créer un bloc serveur avec des directives qui pointent vers votre répertoire web personnalisé. Créez un nouveau bloc serveur à l’emplacement /etc/nginx/conf.d/your_domain.conf
:
- sudo nano /etc/nginx/conf.d/your_domain.conf
Collez le bloc de configuration suivant :
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 que nous avons mis à jour la configuration root
vers notre nouveau répertoire, et le server_name
vers notre nom de domaine. Enregistrez et fermez le fichier.
Deux blocs serveur sont désormais 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 pourvotre_domaine
etwww.votre_domaine
.par_défaut
: Répondra à toutes les demandes sur le port 80 qui ne correspondent pas aux deux autres blocs.
Ensuite, testez pour vous assurer qu’il n’y a pas d’erreurs de syntaxe dans vos fichiers Nginx en utilisant nginx -t
:
- sudo nginx -t
S’il n’y a pas de problèmes, redémarrez Nginx pour activer vos modifications:
- sudo systemctl restart nginx
Avant de pouvoir tester les modifications à partir de votre navigateur, vous devrez mettre à jour les contextes de sécurité SELinux de votre serveur afin que Nginx soit autorisé à servir du contenu à partir du répertoire /var/www/votre_domaine
.
Cette mise à jour du contexte chcon
permettra à votre racine de document personnalisée d’être servie en tant que contenu HTTP:
- chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
Nginx devrait maintenant servir votre nom de domaine. Vous pouvez le tester en accédant à http://votre_domaine
, où vous devriez voir quelque chose comme ceci:
Conclusion
Maintenant que vous avez installé votre serveur web, vous avez de nombreuses options pour le type de contenu à fournir et les technologies que vous souhaitez utiliser pour créer une expérience plus riche.
Pour configurer le protocole HTTPS pour votre nom de domaine avec un certificat SSL gratuit en utilisant Let’s Encrypt, vous devriez passer à Comment sécuriser Nginx avec Let’s Encrypt sur Rocky Linux 9.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-rocky-linux-9