Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code : Skills Commencer
Sections
Administration Linux

Installation et Configuration de Nginx sur CentOS 7 : Un Guide Complet Étape par Étape

Nginx est l’un des serveurs web open-source les plus puissants et les plus largement adoptés au monde. Connu pour ses performances exceptionnelles, sa faible empreinte mémoire et sa capacité à gérer des milliers de connexions simultanées, Nginx est la solution de référence pour servir du contenu statique, agir comme proxy inverse et effectuer l’équilibrage de charge sur les systèmes distribués.

Que vous exécutiez un blog personnel, une plateforme e-commerce à fort trafic ou une architecture microservices complexe, Nginx offre la vitesse et la fiabilité que vos utilisateurs exigent. Ce guide complet vous guide à travers chaque étape de l’installation, de la configuration, de la sécurisation et de l’optimisation de Nginx sur un serveur CentOS 7 — de la préparation initiale du système à l’activation de HTTPS avec un certificat SSL Let’s Encrypt gratuit.

> Prérequis : Un serveur CentOS 7 avec accès root ou sudo. Si vous avez besoin d’un environnement fiable et haute performance pour suivre ce guide, envisagez d’explorer l’hébergement VPS d’AlexHost — conçu pour les charges de travail exigeantes avec accès root complet et stockage SSD.

Étape 1 : Mettre à jour votre système

Avant d’installer un nouveau logiciel, il est essentiel de s’assurer que votre système CentOS 7 est complètement à jour. Les packages obsolètes peuvent introduire des vulnérabilités de sécurité et des conflits de dépendances qui compliquent le processus d’installation.

Ouvrez votre terminal et exécutez la commande suivante :

sudo yum update -y

Cette commande met à jour tous les packages installés vers leurs dernières versions disponibles. Le flag -y confirme automatiquement toutes les invites, rendant le processus non interactif. Laissez la mise à jour se terminer complètement avant de continuer.

Étape 2 : Installer Nginx via YUM

Nginx n’est pas disponible dans les référentiels de base CentOS 7 par défaut. Vous devez d’abord installer le référentiel EPEL (Extra Packages for Enterprise Linux), qui fournit un large éventail de paquets logiciels supplémentaires pour les distributions basées sur RHEL.

Installer le référentiel EPEL :

sudo yum install epel-release -y

Installer Nginx :

sudo yum install nginx -y

Cette commande télécharge et installe Nginx ainsi que toutes les dépendances requises. Une fois l’installation terminée, vous pouvez vérifier la version installée avec :

nginx -v

Vous devriez voir une sortie similaire à :

nginx version: nginx/1.20.x

Étape 3 : Démarrer et activer le service Nginx

Avec Nginx installé, vous devez démarrer le service et le configurer pour qu’il se lance automatiquement à chaque redémarrage du serveur.

Démarrer le service Nginx :

sudo systemctl start nginx

Activer Nginx au démarrage :

sudo systemctl enable nginx

Vérifier l’état du service pour confirmer qu’il est en cours d’exécution :

sudo systemctl status nginx

Vous devriez voir une sortie indiquant que le service est actif (en cours d’exécution) :

● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; ...)
   Active: active (running) since ...

Si le service ne démarre pas, consultez les journaux d’erreurs à /var/log/nginx/error.log pour obtenir des informations de diagnostic.

Étape 4 : Configurer le Firewall

CentOS 7 utilise firewalld comme outil de gestion de firewall par défaut. Par défaut, le trafic HTTP (port 80) et HTTPS (port 443) sont bloqués. Vous devez explicitement ouvrir ces ports pour permettre au trafic web d’atteindre votre serveur Nginx.

Autoriser le trafic HTTP :

sudo firewall-cmd --permanent --add-service=http

Autoriser le trafic HTTPS :

sudo firewall-cmd --permanent --add-service=https

Recharger le firewall pour appliquer les modifications :

sudo firewall-cmd --reload

Vérifier les règles actives :

sudo firewall-cmd --list-all

Vous devriez voir à la fois http et https listés sous la section services de la sortie. Si votre serveur est hébergé derrière un firewall externe ou un groupe de sécurité (courant avec les fournisseurs cloud), assurez-vous que ces règles sont également mises à jour pour permettre le trafic sur les ports 80 et 443.

Étape 5 : Vérifier l’installation

Pour confirmer que Nginx est installé correctement et qu’il diffuse du contenu, ouvrez un navigateur web et accédez à l’adresse IP publique de votre serveur :

http://your_server_ip

Vous devriez voir la page d’accueil par défaut de Nginx, qui affiche le message *"Welcome to nginx!"*. Cela confirme que le serveur web est opérationnel et accessible depuis Internet.

Si vous ne voyez pas la page d’accueil, vérifiez les points suivants :

  • Le service Nginx est en cours d’exécution (sudo systemctl status nginx)
  • Les règles de pare-feu sont correctement appliquées
  • L’adresse IP de votre serveur est correcte
  • Aucun autre service (tel qu’Apache) n’occupe le port 80

Étape 6 : Configurer les blocs serveur Nginx

Nginx utilise des blocs serveur (fonctionnellement équivalents aux hôtes virtuels d’Apache) pour définir comment il traite les demandes pour différents domaines ou sous-domaines. Chaque bloc serveur est généralement stocké en tant que fichier de configuration séparé dans le répertoire /etc/nginx/conf.d/.

Le fichier de configuration principal de Nginx est situé à /etc/nginx/nginx.conf. Il inclut une directive qui charge automatiquement tous les fichiers .conf du répertoire conf.d, ce qui rend votre configuration modulaire et facile à gérer.

Étape 6a : Créer un nouveau fichier de configuration de bloc serveur

Créez un nouveau fichier de configuration pour votre domaine. Remplacez example.com par le nom de votre domaine réel :

sudo nano /etc/nginx/conf.d/example.com.conf

Ajoutez la configuration de bloc serveur suivante :

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm index.php;

    # Logging
    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

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

    # Deny access to hidden files
    location ~ /. {
        deny all;
    }
}

Directives clés expliquées :

DirectiveDescription
listen 80Demande à Nginx d’écouter les connexions entrantes sur le port 80 (HTTP)
server_nameDéfinit les noms de domaine auxquels ce bloc serveur répond
rootSpécifie le répertoire racine du document où les fichiers du site Web sont stockés
indexDéfinit les fichiers par défaut que Nginx servira lorsqu’un répertoire est demandé
try_filesTente de servir l’URI demandé en tant que fichier, puis en tant que répertoire, et retourne une erreur 404 si aucun n’existe
access_log / error_logDéfinit des fichiers journaux séparés pour cet hôte virtuel pour un débogage plus facile

Enregistrez le fichier et quittez l’éditeur (Ctrl+X, puis Y, puis Enter dans nano).

Étape 7 : Créer la racine du document et le fichier de test

Créez le répertoire racine du document que vous avez défini dans la configuration du bloc serveur :

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

Créez un simple fichier index.html pour vérifier que le bloc serveur fonctionne correctement :

echo "<h1>Welcome to Example.com — Powered by Nginx on CentOS 7!</h1>" | sudo tee /var/www/example.com/html/index.html

Définissez la propriété et les permissions correctes afin que Nginx puisse lire les fichiers :

sudo chown -R nginx:nginx /var/www/example.com/
sudo chmod -R 755 /var/www/example.com/

> Remarque sur SELinux : CentOS 7 est livré avec SELinux activé par défaut. Si Nginx ne peut pas lire vos fichiers web même avec les permissions correctes, vous devrez peut-être appliquer le contexte SELinux approprié :

> “`bash

> sudo chcon -Rt httpd_sys_content_t /var/www/example.com/

> “`

Étape 8 : Tester la configuration Nginx

Avant de redémarrer Nginx pour appliquer votre nouvelle configuration, testez toujours les erreurs de syntaxe. Un fichier mal configuré peut arrêter votre serveur web entier.

Exécutez le test de configuration :

sudo nginx -t

Un test réussi produit la sortie suivante :

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

Si des erreurs sont signalées, examinez attentivement les numéros de ligne indiqués dans vos fichiers de configuration et corrigez les problèmes avant de continuer.

Redémarrez Nginx pour appliquer les modifications :

sudo systemctl restart nginx

Vous pouvez également, si vous souhaitez recharger la configuration sans interrompre les connexions actives (recommandé pour les environnements de production), utiliser :

sudo systemctl reload nginx

Accédez maintenant à votre domaine dans un navigateur. Vous devriez voir votre page index.html personnalisée.

Étape 9 : Configurer HTTPS avec Let's Encrypt

Exécuter un site web sur HTTP simple expose vos utilisateurs à des risques d’écoute clandestine et d’attaques de type man-in-the-middle. Sécuriser votre site avec HTTPS n’est plus optionnel — c’est une exigence fondamentale pour la confiance des utilisateurs, l’intégrité des données et le classement dans les moteurs de recherche.

Let's Encrypt fournit des certificats SSL/TLS gratuits, automatisés et de confiance. Vous pouvez également explorer les Certificats SSL premium d’AlexHost pour les options de validation étendue et validées par l’organisation qui offrent des niveaux de confiance plus élevés pour les sites web professionnels.

Installer Certbot et le plugin Nginx

sudo yum install certbot python2-certbot-nginx -y

Obtenir et installer le certificat SSL

Exécutez Certbot avec le plugin --nginx, qui modifie automatiquement votre configuration Nginx pour activer HTTPS :

sudo certbot --nginx -d example.com -d www.example.com

Suivez les invites interactives :

  1. Entrez votre adresse e-mail pour les notifications de renouvellement
  2. Acceptez les conditions d’utilisation de Let's Encrypt
  3. Choisissez si vous souhaitez rediriger le trafic HTTP vers HTTPS (fortement recommandé — sélectionnez l’option 2)

Certbot effectuera automatiquement :

  • L’obtention d’un certificat signé auprès de Let's Encrypt
  • La modification de votre /etc/nginx/conf.d/example.com.conf pour inclure les directives SSL
  • La configuration d’une redirection HTTP vers HTTPS

Après la fin, vérifiez la configuration HTTPS en visitant :

https://example.com

Votre navigateur doit afficher une icône de cadenas, confirmant que la connexion est chiffrée.

Étape 10 : Automatiser le renouvellement des certificats

Les certificats Let's Encrypt sont valides pendant 90 jours. Ne pas les renouveler avant l’expiration affichera des avertissements de sécurité à vos visiteurs, impactant gravement la confiance des utilisateurs et le trafic.

Tester le processus de renouvellement

Avant de configurer l’automatisation, vérifiez que le processus de renouvellement fonctionne correctement :

sudo certbot renew --dry-run

Une exécution d’essai réussie confirme que le renouvellement automatique fonctionnera sans problèmes.

Configurer une tâche Cron pour le renouvellement automatique

Ouvrez la crontab root :

sudo crontab -e

Ajoutez la ligne suivante pour vérifier et renouveler les certificats deux fois par jour (la fréquence recommandée) :

0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

Explication de la planification cron :

    0 0,12 * * * — S’exécute à minuit et à midi chaque jour
    --quiet — Supprime la sortie sauf en cas d’erreur
    --post-hook "systemctl reload nginx" — Recharge Nginx après un renouvellement réussi pour appliquer le nouveau certificat sans interruption de service
    
    Enregistrez et quittez l’éditeur crontab. Vos certificats SSL se renouvelleront désormais automatiquement, gardant votre site sécurisé sans aucune intervention manuelle.
    Conseils d’optimisation des performances pour Nginx sur CentOS 7
    Une fois votre configuration de base terminée, considérez ces améliorations de configuration pour maximiser les performances de Nginx :
    Activer la compression Gzip
    Ajoutez ce qui suit à votre nginx.conf dans le bloc http {} pour réduire la taille des réponses envoyées aux clients :
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
    Configurer la mise en cache du navigateur
    Ajoutez des en-têtes de contrôle de cache pour les ressources statiques afin de réduire la charge du serveur et d’améliorer les temps de chargement des pages :
    location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
    Ajuster les processus de travail
    Dans /etc/nginx/nginx.conf, définissez le nombre de processus de travail pour correspondre au nombre de cœurs CPU de votre serveur :
    worker_processes auto;
    worker_connections 1024;
    > Pour les applications gourmandes en ressources ou les sites Web à fort trafic, envisagez de passer à Serveurs Dédiés d’AlexHost, qui fournissent des ressources CPU, RAM et stockage garanties sans effets de voisinage bruyant.
    Gestion de plusieurs sites Web avec Nginx
    L’une des plus grandes forces de Nginx est sa capacité à héberger plusieurs sites Web sur un seul serveur via des blocs serveur. Pour chaque domaine supplémentaire, il suffit de :
    
    Créer un nouveau fichier .conf dans /etc/nginx/conf.d/
  • Définir une directive server_name unique
  • Pointer la directive root vers la racine de document appropriée
  • Exécuter sudo nginx -t et sudo systemctl reload nginx
  • Si vous préférez une interface graphique pour gérer votre serveur Web, les hôtes virtuels, les bases de données et les comptes de messagerie, envisagez un VPS avec cPanel — une solution de panneau de contrôle entièrement gérée qui simplifie l’administration du serveur sans sacrifier la flexibilité.

    Vous pouvez également explorer la gamme complète de panneaux de contrôle VPS disponibles chez AlexHost, y compris Plesk, DirectAdmin et d’autres options adaptées à différents flux de travail et préférences techniques.

    Dépannage des problèmes courants d’Nginx sur CentOS 7

    ProblèmeCause probableSolution
    Nginx ne démarre pasPort 80/443 déjà utiliséExécutez `sudo ss -tlnpgrep :80` pour identifier le processus en conflit
    Erreur 403 ForbiddenPermissions de fichier incorrectes ou contexte SELinuxVérifiez chmod/chown et appliquez chcon pour SELinux
    502 Bad GatewayBackend en amont (PHP-FPM, Node.js) non actifVérifiez que le service backend est actif et que le socket/port est correct
    Certificat SSL ne se renouvelle pasCertbot ne peut pas se lier au port 80Assurez-vous que le port 80 est ouvert et qu’aucun autre processus ne le bloque
    Les modifications ne prennent pas effetConfiguration non rechargéeExécutez sudo systemctl reload nginx après chaque modification de configuration

    Conclusion

    Vous avez maintenant installé, configuré et sécurisé Nginx sur CentOS 7 avec succès. Votre serveur est prêt à héberger des sites Web avec des performances élevées, gérer efficacement les connexions simultanées et servir du contenu via des connexions HTTPS chiffrées — toutes des qualités essentielles pour un environnement Web moderne et de qualité production.

    Voici un résumé de ce qui a été réalisé :

    • ✅ Mise à jour du système CentOS 7 et installation de Nginx via le référentiel EPEL
    • ✅ Démarrage et activation du service Nginx pour un démarrage automatique au boot
    • ✅ Configuration de firewalld pour autoriser le trafic HTTP et HTTPS
    • ✅ Création et configuration d’un bloc serveur personnalisé pour un domaine
    • ✅ Définition des permissions de fichiers correctes et des contextes SELinux pour la racine du document
    • ✅ Test de la configuration pour les erreurs de syntaxe avant d’appliquer les modifications
    • ✅ Sécurisation du site avec un certificat SSL Let’s Encrypt gratuit via Certbot
    • ✅ Automatisation du renouvellement des certificats avec une tâche cron

    Maintenir un serveur Web sécurisé et performant nécessite une attention continue. Gardez Nginx à jour régulièrement, surveillez vos journaux d’accès et d’erreurs, et révisez votre configuration à mesure que les exigences de votre site évoluent.

    Si vous recherchez une base d’hébergement robuste pour vos projets alimentés par Nginx, AlexHost offre un spectre complet de solutions — du Shared Web Hosting d’entrée de gamme pour les petits sites aux VPS haute performance et à l’infrastructure dédiée pour les applications exigeantes. Chaque plan est soutenu par du matériel de qualité entreprise, un support technique 24/7 et un engagement envers la disponibilité et la sécurité.