Come risolvere l'errore '[emerg] server directive is not allowed here' in Nginx?

Pubblicato 8 settembre 2024

Problema: Errore Direttiva Server di Nginx

Durante la configurazione di Nginx, potresti vedere il messaggio di errore '[emerg] "server" directive is not allowed here'. Questo errore si verifica quando la direttiva server è posizionata nel punto sbagliato del file di configurazione di Nginx. Significa che Nginx non può utilizzare la configurazione a causa di questo errore, che può impedire al server web di avviarsi o ricaricarsi correttamente.

Soluzioni per Correggere l'Errore '[emerg] "server" directive is not allowed here'

Struttura Corretta del File di Configurazione di Nginx

Per risolvere l'errore '[emerg] "server" directive is not allowed here', devi strutturare correttamente il tuo file di configurazione Nginx. Il blocco server deve essere all'interno di un blocco http. Ecco come fare:

  1. Apri il tuo file di configurazione principale di Nginx (/etc/nginx/nginx.conf).
  2. Trova il blocco http. Se manca, aggiungilo:
http {
    # I tuoi blocchi server vanno qui
}
  1. Inserisci il tuo blocco server all'interno del blocco http:
http {
    server {
        # La tua configurazione del server
    }
}
  1. Controlla la struttura del tuo file nginx.conf per assicurarti che segua questo layout:
events {
    # Impostazioni del contesto eventi
}

http {
    # Impostazioni HTTP globali

    server {
        # Blocco server 1
    }

    server {
        # Blocco server 2
    }
}

Utilizzo delle Direttive Include per una Configurazione Modulare

Puoi utilizzare le direttive include per suddividere la tua configurazione in più file:

  1. Nel tuo file nginx.conf principale, aggiungi una dichiarazione include all'interno del blocco http:
http {
    include /etc/nginx/sites-enabled/*;
}
  1. Crea file di configurazione separati per ogni blocco server nella directory /etc/nginx/sites-available/.

  2. Per attivare una configurazione, crea un link simbolico da sites-available a sites-enabled:

sudo ln -s /etc/nginx/sites-available/tua-configurazione /etc/nginx/sites-enabled/

Questo metodo mantiene il tuo file di configurazione principale pulito e facilita la gestione di molteplici blocchi server.

Verifica della Sintassi e Test della Configurazione

Prima di applicare le modifiche alla tua configurazione Nginx, testala sempre:

  1. Usa il comando nginx -t per verificare errori di sintassi:
sudo nginx -t
  1. Se ci sono errori, il comando ti mostrerà il numero di riga e il file dove si trova il problema.

  2. Correggi eventuali problemi e esegui nuovamente il test finché non ottieni un messaggio di successo.

  3. Una volta che il test passa, ricarica Nginx per applicare le modifiche:

sudo systemctl reload nginx