Comment corriger l'erreur Nginx "Duplicate Default Server" ?

Publié 13 octobre 2024

Problème : Serveur par défaut en double dans Nginx

L'erreur "Duplicate Default Server" dans Nginx se produit lorsque plusieurs blocs serveur sont définis comme serveur par défaut pour la même combinaison d'adresse IP et de port. Ce problème de configuration peut entraîner des réponses incohérentes de Nginx aux requêtes entrantes.

Solution : Supprimer les configurations en double de serveur par défaut

Vérification du répertoire /etc/nginx/sites-enabled

Pour résoudre le problème de serveur par défaut en double, vérifiez le répertoire /etc/nginx/sites-enabled. Ce répertoire contient des liens symboliques vers les configurations de blocs serveur actifs. Recherchez les fichiers avec des directives default_server conflictuelles.

Pour trouver les fichiers de configuration conflictuels, utilisez cette commande :

grep -R "default_server" /etc/nginx/sites-enabled

Cette commande affiche toutes les occurrences de "default_server" dans les fichiers de configuration. Examinez la sortie pour identifier les directives default_server en double.

Après avoir identifié les fichiers conflictuels, supprimez ou modifiez les directives de serveur par défaut inutiles. Si vous avez un fichier de configuration par défaut dont vous n'avez pas besoin, supprimez-le avec :

sudo rm /etc/nginx/sites-enabled/default

Conseil: Sauvegarde avant suppression

Avant de supprimer des fichiers de configuration, créez une sauvegarde pour éviter de perdre des paramètres importants. Utilisez cette commande pour créer une sauvegarde :

sudo cp /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default.bak

Modification de la configuration Nginx

Si vous devez conserver plusieurs blocs serveur, modifiez la directive listen dans vos fichiers de configuration. Assurez-vous qu'un seul bloc serveur a le paramètre default_server pour chaque combinaison d'adresse IP et de port.

Pour modifier un fichier de configuration, utilisez un éditeur de texte comme nano :

sudo nano /etc/nginx/sites-enabled/votre_fichier_config

Modifiez la directive listen pour supprimer ou ajouter le paramètre default_server selon les besoins. Par exemple :

listen 80;  # Supprimez default_server s'il n'est pas nécessaire

Ou, si vous voulez que ce bloc serveur soit le serveur par défaut :

listen 80 default_server;

N'oubliez pas d'utiliser le paramètre default_server une seule fois par combinaison IP:port dans tous vos fichiers de configuration.

Après avoir effectué ces modifications, sauvegardez le fichier et quittez l'éditeur de texte. Répétez ce processus pour les autres fichiers de configuration qui nécessitent des changements.

Vérification de la correction

Redémarrage de Nginx

Après avoir modifié votre configuration Nginx, testez et redémarrez le service pour appliquer les changements. Utilisez cette commande pour vérifier si votre configuration est valide :

sudo nginx -t

Cette commande teste les fichiers de configuration Nginx pour détecter les erreurs de syntaxe. Si le test réussit, vous verrez un message confirmant que le test de configuration est réussi.

Si le test passe, redémarrez le service Nginx pour appliquer les changements :

sudo systemctl restart nginx

Pour les systèmes n'utilisant pas systemd, utilisez :

sudo service nginx restart

Conseil: Redémarrage en douceur

Pour redémarrer Nginx sans interrompre les connexions actives, utilisez la commande suivante :

sudo systemctl reload nginx

Cette méthode recharge la configuration sans interrompre les connexions.

Surveillance des journaux d'erreurs

Après avoir redémarré Nginx, vérifiez les journaux d'erreurs pour confirmer que l'erreur de serveur par défaut en double a disparu. Accédez au journal d'erreurs Nginx avec cette commande :

sudo tail -f /var/log/nginx/error.log

Cette commande affiche les dernières entrées du journal d'erreurs en temps réel. Recherchez toute nouvelle occurrence de l'erreur de serveur par défaut en double.

Pour vérifier si votre serveur fonctionne correctement, essayez d'accéder à votre site web via un navigateur. Si le site se charge sans problème, c'est un bon signe que la configuration fonctionne correctement.

Vous pouvez également utiliser cette commande pour vérifier si Nginx fonctionne sans erreurs :

sudo systemctl status nginx

Cette commande affiche l'état actuel du service Nginx, y compris les messages d'erreur ou les avertissements récents.

Si vous ne voyez aucune erreur liée aux serveurs par défaut en double et que votre site web est accessible, vous avez résolu le problème.