Introduction

Nginx est l'un des serveurs web les plus populaires au monde ; il est en charge de l'hébergement de certains des sites les plus importants et les plus fréquentés sur Internet. Il est plus respectueux des ressources qu'Apache dans la plupart des cas, et peut être utilisé comme serveur web ou proxy inverse.

Dans ce guide, nous allons voir comment installer Nginx sur un serveur CentOS 8.

Conditions préalables

Pour suivre ce guide, vous devrez avoir accès à un serveur CentOS 8 en tant qu'utilisateur non root avec des privilèges sudo, et un pare-feu actif installé sur votre serveur. Pour le mettre en place, vous pouvez suivre notre Guide de configuration initiale du serveur pour CentOS 8.

Étape 1 - Installation du serveur web Nginx

Pour installer Nginx, nous utiliserons le gestionnaire de paquets dnf, qui est le nouveau gestionnaire de paquets par défaut sur CentOS 8.

Installez le package nginx avec :

  • sudo dnf install nginx

Lorsque vous y êtes invité, entrez y pour confirmer que vous voulez 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 :

  • sudo systemctl enable nginx
  • sudo systemctl start nginx

Cela permettra de lancer Nginx au démarrage du système.

Étape 2 - Ajustement des règles du pare-feu

Si vous avez activé le pare-feu firewalld comme indiqué dans notre guide de configuration initiale du serveur pour CentOS 8, vous devrez ajuster les paramètres du pare-feu afin d'autoriser les connexions externes sur votre serveur web Nginx, qui fonctionne par défaut sur le port 80. 

Exécutez la commande suivante pour activer en permanence 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 de ce type :

Output
public 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 changements, vous devez recharger le service de pare-feu :

  • sudo firewall-cmd --reload

Votre serveur Nginx est maintenant entièrement installé et prêt à être consulté par des visiteurs externes.

Étape 3 - Vérification de votre serveur Web

Vous pouvez maintenant tester si votre serveur web Nginx est opérationnel en accédant à l'adresse IP publique ou au nom de domaine de votre serveur depuis votre navigateur web.

Remarque: si vous utilisez DigitalOcean comme fournisseur d'hébergement DNS, vous pouvez consulter la documentation de nos produits pour obtenir des instructions détaillées sur la façon de configurer un nouveau nom de domaine et de le faire pointer vers votre serveur.

Si vous n'avez pas de nom de domaine pointé vers votre serveur et que vous ne connaissez pas l'adresse IP publique de votre serveur, vous pouvez la trouver en exécutant la commande suivante :

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

Cela imprimera quelques adresses IP. Vous pouvez essayer chacune d'entre elles à tour de rôle dans votre navigateur web.

Vous pouvez également vérifier quelle est l'adresse IP accessible, telle qu'elle est vue depuis d'autres endroits sur Internet :

  • curl -4 icanhazip.com

Saisissez l'adresse que vous recevez dans votre navigateur web et elle vous conduira à la page d'accueil par défaut de Nginx :

Page Nginx par défaut CentOS 8

Si vous voyez cette page, c'est que votre serveur web est maintenant correctement installé.

Étape 4 - Gestion du processus Nginx

Maintenant que votre serveur web est opérationnel, nous allons voir comment gérer le service Nginx via systemctl.

Chaque fois que vous devez arrêter votre serveur web, vous pouvez utiliser :

  • sudo systemctl stop nginx

Pour démarrer le serveur web lorsqu'il est arrêté, tapez :

  • sudo systemctl start nginx

Pour arrêter puis redémarrer le service, vous pouvez utiliser :

  • sudo systemctl restart nginx

Nginx peut également recharger les changements de configuration sans interrompre les connexions. Pour ce faire, tapez :

  • sudo systemctl reload nginx

Par défaut, Nginx est configuré pour un lancement automatique au démarrage du serveur. Si ce n'est pas ce que vous souhaitez, vous pouvez désactiver ce comportement en tapant :

  • sudo systemctl disable nginx

Pour réactiver le service et lancer Nginx au démarrage, vous pouvez utiliser :

  • sudo systemctl enable nginx

Étape 5 - Se familiariser avec les fichiers et répertoires Nginx importants

Maintenant que vous savez comment gérer le service Nginx, vous devriez prendre 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 ne consiste qu'en 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 changeant les fichiers de configuration Nginx.

Configuration du serveur

  • /etc/nginx : répertoire de configuration Nginx. Tous les fichiers de configuration Nginx se trouvent ici.
  • /etc/nginx/nginx.conf : fichier de configuration principal de Nginx. Celui-ci peut être modifié pour apporter des changements à la configuration globale de Nginx.
  • /etc/nginx/conf.d/ : ce répertoire contient les fichiers de configuration du bloc de serveurs où vous pouvez définir les sites web qui sont hébergés dans Nginx. Une approche classique consiste à placer chaque site web dans un fichier séparé qui porte le nom de domaine du site (par exemple, your_domain.conf).

Journaux du serveur

  • /var/log/nginx/access.log : chaque requête adressée à votre serveur web est enregistrée dans ce fichier journal, sauf si Nginx est configuré pour procéder autrement.
  • /var/log/nginx/error.log : toute erreur Nginx sera enregistrée dans ce journal. 

Étape 6 - Mise en place des blocs de serveur (facultatif)

Si vous souhaitez héberger plusieurs sites web sur le même serveur Nginx, vous devrez mettre en place des blocs de serveur. Les blocs de serveur Nginx fonctionnent de manière similaire aux hôtes virtuels Apache permettant à un seul serveur de répondre à plusieurs noms de domaine et de servir un contenu différent pour chacun d'eux. Sous CentOS 8, les blocs de serveur sont définis dans des fichiers .conf situés dans /etc/nginx/conf.d.

Nous allons mettre en place un block de serveur pour un domaine appelé your_domain. Pour en savoir plus sur la mise en place d'un nom de domaine avec DigitalOcean, voir notre introduction à DigitalOcean DNS. 

Par défaut, Nginx sur CentOS 8 est configuré pour servir des documents à partir d'un répertoire situé dans /usr/share/nginx/html. Même si 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, nous allons créer une structure de répertoire dans /var/www pour le site web your_domain, en laissant /usr/share/nginx/html en place comme répertoire par défaut à servir si une demande du client ne correspond à aucun autre site.

Créez le répertoire pour votre_domaine comme suit en utilisant le drapeau -p pour créer tout répertoire parent nécessaire :

  • sudo mkdir -p /var/www/your_domain/html

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

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

Ensuite, nous allons créer un exemple de page index.html pour tester la configuration du bloc serveur. L'éditeur de texte par défaut fourni avec CentOS 8 est vi. vi, un éditeur de texte extrêmement puissant, mais il peut être difficile à utiliser pour les utilisateurs qui manquent d'expérience. Vous pouvez installer un éditeur plus adapté, tel que nano, pour faciliter l'édition des fichiers de configuration sur votre serveur CentOS 8 :

  • sudo dnf install nano

Vous pouvez maintenant utiliser nano pour créer le fichier d'exemple index.html :

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

À l'intérieur de ce fichier, ajoutez le code HTML 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é. Si vous avez utilisé nano, vous pouvez le faire en appuyant sur CTRL + X, Y, puis ENTER (ENTRÉE).

Pour que Nginx puisse servir ce contenu, nous devons créer un bloc serveur avec les directives correctes qui pointent vers notre root (racine) web personnalisée. Nous allons créer un nouveau bloc serveur à l'adresse /etc/nginx/conf. d/your_domain.conf :

  • sudo nano /etc/nginx/conf.d/your_domain.conf

Collez le bloc de configuration suivant :

/etc/nginx/conf.d/your_domain.conf
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;
        }
}

Sauvegardez et fermez le fichier lorsque vous avez terminé de mettre à jour son contenu.

Pour vous assurer qu'il n'y a aucune erreur de syntaxe dans vos fichiers Nginx, exécutez :

  • sudo nginx -t

S'il n'y a pas de problème, vous verrez le résultat suivant :

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

Une fois votre test de configuration réussi, redémarrez Nginx pour activer vos modifications :

  • sudo systemctl restart nginx

Avant de pouvoir tester les changements depuis votre navigateur, vous devrez mettre à jour les contextes de sécurité SELinux de votre serveur afin que Nginx soit autorisé à servir le contenu du répertoire /var/www/votre_domaine.

La commande suivante permettra à la root (racine) de votre document personnalisé d'être servie comme contenu HTTP :

  • chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/

Vous pouvez maintenant tester votre configuration de domaine personnalisée en naviguant sur http://your_domain, où vous verrez quelque chose comme ceci :

Nginx server block

Cette page restitue le code HTML que nous avons défini dans la root (racine) du document personnalisé créé pour le bloc serveur. Si vous êtes en mesure de voir cette page, cela signifie que votre serveur Nginx est correctement configuré pour servir votre domaine.

Conclusion

Dans ce guide, nous avons vu comment installer et configurer Nginx, qui est à la fois un serveur web performant et un proxy inverse. Nous avons examiné comment gérer le service Nginx fonctionnant sur votre serveur, et quels sont les principaux répertoires utilisés par Nginx pour stocker les fichiers de configuration, le contenu et les journaux.

À partir de là, vous disposez de nombreuses options pour le type de contenu et les technologies que vous pourriez vouloir utiliser dans les sites web hébergés sur votre serveur web.

0 Comments

Creative Commons License