Comment résoudre l'erreur '[emerg] server directive is not allowed here' dans Nginx ?

Publié 8 septembre 2024

Problème : Erreur de directive serveur Nginx

Lors de la configuration de Nginx, vous pouvez rencontrer le message d'erreur '[emerg] "server" directive is not allowed here'. Cette erreur survient lorsque la directive server est placée au mauvais endroit dans le fichier de configuration Nginx. Cela signifie que Nginx ne peut pas utiliser la configuration en raison de cette erreur, ce qui peut empêcher le serveur web de démarrer ou de se recharger correctement.

Solutions pour corriger l'erreur '[emerg] "server" directive is not allowed here'

Structure appropriée du fichier de configuration Nginx

Pour corriger l'erreur '[emerg] "server" directive is not allowed here', vous devez structurer correctement votre fichier de configuration Nginx. Le bloc server doit se trouver à l'intérieur d'un bloc http. Voici comment procéder :

  1. Ouvrez votre fichier de configuration principal Nginx (/etc/nginx/nginx.conf).
  2. Trouvez le bloc http. S'il est absent, ajoutez-le :
http {
    # Vos blocs server vont ici
}
  1. Placez votre bloc server à l'intérieur du bloc http :
http {
    server {
        # Votre configuration de serveur
    }
}
  1. Vérifiez la structure de votre fichier nginx.conf pour vous assurer qu'il suit cette disposition :
events {
    # Paramètres du contexte event
}

http {
    # Paramètres HTTP globaux

    server {
        # Bloc server 1
    }

    server {
        # Bloc server 2
    }
}

Utilisation des directives include pour une configuration modulaire

Vous pouvez utiliser des directives include pour répartir votre configuration sur plusieurs fichiers :

  1. Dans votre fichier nginx.conf principal, ajoutez une instruction include dans le bloc http :
http {
    include /etc/nginx/sites-enabled/*;
}
  1. Créez des fichiers de configuration séparés pour chaque bloc server dans le répertoire /etc/nginx/sites-available/.

  2. Pour activer une configuration, créez un lien symbolique de sites-available vers sites-enabled :

sudo ln -s /etc/nginx/sites-available/votre-config /etc/nginx/sites-enabled/

Cette méthode permet de garder votre fichier de configuration principal propre et facilite la gestion de plusieurs blocs server.

Vérification de la syntaxe et test de la configuration

Avant d'appliquer des modifications à votre configuration Nginx, testez-la toujours :

  1. Utilisez la commande nginx -t pour vérifier les erreurs de syntaxe :
sudo nginx -t
  1. S'il y a des erreurs, la commande vous indiquera le numéro de ligne et le fichier où se trouve le problème.

  2. Corrigez les problèmes et relancez le test jusqu'à obtenir un message de succès.

  3. Une fois que le test réussit, rechargez Nginx pour appliquer les modifications :

sudo systemctl reload nginx