Jak ustawić domyślny host dla Nginx?

11

Próbuję dowiedzieć się, jak ustawić domyślnego hosta dla mojej instalacji nginx. Znalazłem ten artykuł na Wiki nginx:

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

Niestety to nie działa. Po ponownym uruchomieniu otrzymuję to:

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

Po usunięciu dyrektywy http otrzymuję to:

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

Korzystam z Ubuntu 10.04.3, gdzie używam oficjalnego PPA nginx. Wersja 1.0.9 nginx jest uruchomiona.

Ulf Klose
źródło

Odpowiedzi:

16

Konfiguracje Nginx oparte są na szeregu zagnieżdżonych bloków. Powinien być tylko jeden blok http. Zazwyczaj jest to zdefiniowane w /etc/nginx/nginx.conf - wszystkie zawarte pliki (np. Z dostępnych stron) są zawarte w tym bloku http. Aby skonfigurować domyślnego hosta / catch-all, potrzebujesz tylko sekcji bloku serwera dla domyślnego hosta. Dokonuje się tego poprzez dodanie „default” do dyrektywy Listen. Ponadto często używa się nazwy serwera, która nie będzie pasować do żadnej prawdziwej nazwy - zazwyczaj podkreślenia („_”), ale dopuszczalne są również inne znaki. Jeśli pominięto parametr domyślny, pierwszy blok serwera jest traktowany jako domyślny. (Aby uzyskać więcej informacji, zobacz przewodnik nginx po nazwach serwerów )

Domyślna („oryginalna” w tym kontekście) konfiguracja nginx może zawierać domyślny (catch-all) blok serwera w pliku nginx.conf, który możesz skonfigurować.

Jeśli chodzi o drugi błąd, upewnij się, że w pliku nginx.conf zdefiniowano „main” (wiersz powinien zaczynać się od „log_format main ...” (i oczywiście sprawdź nawiasy). Możesz całkowicie pominąć wiersz „access_log” jeśli nie chcesz, aby żądania do domyślnego serwera były rejestrowane (lub możesz zmienić format, definiując nowy format).

cyberx86
źródło
To było szybkie. Dzięki. Wypróbuję to jutro po odrobinie snu ;-).
Ulf Klose
Użycie _, ponieważ nazwa_serwera nie dodaje się do „domyślności” serwera {}, jest po prostu powszechnie stosowane, aby uchronić blokadę przed konfliktami z innymi blokami serwera, więc nie ma „przesłonięcia” domyślnej flagi dyrektywy nasłuchiwania. To jedyne, co wyraźnie oznacza serwer jako domyślny. Nadal +1
kolbyjack 11.11.11
@kolbyjack - Dzięki za korektę - naprawię to w mojej odpowiedzi.
cyberx86 11.11.11
-1

Spróbuj tego. Zamień na return 404dowolną domyślną akcję, którą chcesz.

/server//a/946083/453080

ThilinaB
źródło