Come posso impostare un host predefinito per nginx?


11

Sto cercando di capire come impostare un host predefinito per la mia installazione di nginx. Ho trovato questo articolo nel Wiki di nginx:

http://wiki.nginx.org/NginxVirtualHostExample#A_Default_Catchall_Virtual_Host

Sfortunatamente, questo non funziona. Dopo il riavvio ottengo questo:

Restarting nginx: nginx: [emerg] unknown directive "http" in /etc/nginx/sites-enabled/catchall:1
nginx: configuration file /etc/nginx/nginx.conf test failed

Dopo aver rimosso la direttiva http ottengo questo:

Restarting nginx: nginx: [emerg] unknown log format "main" in /etc/nginx/sites-enabled/catchall:7
nginx: configuration file /etc/nginx/nginx.conf test failed

Sono su Ubuntu 10.04.3 dove sto usando il nginx PPA ufficiale. La versione 1.0.9 di nginx è in esecuzione.

Risposte:


16

Le configurazioni Nginx si basano su una serie di blocchi nidificati. Dovrebbe esserci solo un blocco http. Questo è generalmente definito in /etc/nginx/nginx.conf - tutti i file inclusi (ad es. Dai siti disponibili) sono inclusi in questo blocco http. Per configurare un host predefinito / catch-all, è necessaria solo la sezione di blocco del server per l'host predefinito. Ciò si ottiene aggiungendo "default" alla direttiva hear. Inoltre, è comune utilizzare un nome_server che non corrisponderà a nessun nome reale, in genere un carattere di sottolineatura ("_"), ma sono accettabili anche altri caratteri. Se si omette il parametro predefinito, il primo blocco server viene considerato come predefinito. (Vedi la guida di nginx a server_names per maggiori informazioni)

La configurazione predefinita ('originale' in questo contesto) nginx può includere un blocco server predefinito (catch-all) in nginx.conf che è possibile configurare.

Per quanto riguarda il secondo errore, assicurati che "main" sia definito in nginx.conf (una riga dovrebbe iniziare con "log_format main ..." (e, naturalmente, controlla le parentesi). Puoi omettere completamente la riga "access_log" se non si desidera che vengano registrate le richieste al server predefinito (o è possibile modificare il formato definendo un nuovo formato).


È stato veloce. Grazie. Lo proverò domani dopo aver dormito un po ';-).
Ulf Klose,

L'uso di _ come nome_server non si aggiunge alla "defaultness" del server {}, è solo comunemente usato per evitare che il catchall sia in conflitto con altri blocchi di server, quindi non c'è 'override' riguardo al flag predefinito nella direttiva hear. È l'unica cosa che contrassegna esplicitamente il server come predefinito. Ancora, +1
kolbyjack l'

@kolbyjack - Grazie per la correzione - Lo risolverò nella mia risposta.
cyberx86,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.