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 -yCette 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 -yInstaller Nginx :
sudo yum install nginx -yCette 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 -vVous 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 nginxActiver Nginx au démarrage :
sudo systemctl enable nginxVérifier l’état du service pour confirmer qu’il est en cours d’exécution :
sudo systemctl status nginxVous 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=httpAutoriser le trafic HTTPS :
sudo firewall-cmd --permanent --add-service=httpsRecharger le firewall pour appliquer les modifications :
sudo firewall-cmd --reloadVérifier les règles actives :
sudo firewall-cmd --list-allVous 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_ipVous 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.confAjoutez 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 :
| Directive | Description |
|---|---|
listen 80 | Demande à Nginx d’écouter les connexions entrantes sur le port 80 (HTTP) |
server_name | Définit les noms de domaine auxquels ce bloc serveur répond |
root | Spécifie le répertoire racine du document où les fichiers du site Web sont stockés |
index | Définit les fichiers par défaut que Nginx servira lorsqu’un répertoire est demandé |
try_files | Tente 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_log | Dé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/htmlCré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.htmlDé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 -tUn 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 successfulSi 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 nginxVous pouvez également, si vous souhaitez recharger la configuration sans interrompre les connexions actives (recommandé pour les environnements de production), utiliser :
sudo systemctl reload nginxAccé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 -yObtenir 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.comSuivez les invites interactives :
- Entrez votre adresse e-mail pour les notifications de renouvellement
- Acceptez les conditions d’utilisation de Let's Encrypt
- 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.confpour 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.comVotre 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-runUne 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 -eAjoutez 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/server_name uniqueroot vers la racine de document appropriéesudo nginx -t et sudo systemctl reload nginxSi 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ème | Cause probable | Solution | |
|---|---|---|---|
| Nginx ne démarre pas | Port 80/443 déjà utilisé | Exécutez `sudo ss -tlnp | grep :80` pour identifier le processus en conflit |
| Erreur 403 Forbidden | Permissions de fichier incorrectes ou contexte SELinux | Vérifiez chmod/chown et appliquez chcon pour SELinux | |
| 502 Bad Gateway | Backend en amont (PHP-FPM, Node.js) non actif | Vérifiez que le service backend est actif et que le socket/port est correct | |
| Certificat SSL ne se renouvelle pas | Certbot ne peut pas se lier au port 80 | Assurez-vous que le port 80 est ouvert et qu’aucun autre processus ne le bloque | |
| Les modifications ne prennent pas effet | Configuration non rechargée | Exé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é.
sur tous les services d'hébergement