Nginx nie przeładowuje - jak wyśledzić dlaczego?

96

Cześć. Mój serwer Nginx działa od dłuższego czasu na serwerze Ubuntu 12.04.

Stopniowo staram się wykorzystywać różne bity i doszedłem do optymalizacji czasu ładowania na mojej stronie wordpress.

Po wprowadzeniu kilku zmian w pliku hostów postanowiłem:

sudo /etc/init.d/nginx reload

Do czego dochodzę:

  • Ponowne ładowanie konfiguracji nginx nginx [fail]

Nie podano żadnych dodatkowych informacji ani uzasadnienia. W jaki sposób mogę zrestartować mój serwer, aby wyświetlał wszelkie komunikaty o błędach podczas przeładowywania, dzięki czemu mogę rozpocząć wyszukiwanie błędu.

W przypadku pytania bonusowego:

Dla tych sysadminów Nginx, kiedy wprowadziłeś kilka zmian do hostów i zainstalowałeś kilka innych bitów, a twój serwer nginx nagle się nie przeładuje (nawiasem mówiąc, wszystko nadal działa!), Jak zaczynasz swoje podejście do izolowania dlaczego lub zacznij rozkładać rzeczy do debugowania!

Huw
źródło
4
Sprawdź swoją składnię za pomocą sudo nginx -t(lub sudo nginx -p /etc/nginx -c nginx.confgdzie /etc/nginxjest prefiks konfiguracji i nginx.confgłówny plik konfiguracyjny).
Lekensteyn,
sudo nginx -s reload również zdawało się dać mi odczyt!
Huw

Odpowiedzi:

145

Sprawdź syslog (/ var / log / syslog) pod kątem komunikatów o problemach z plikiem konfiguracyjnym.

Z wiersza poleceń możesz uruchomić:

nginx -c /etc/nginx/nginx.conf -t

aby nginx sprawdził konfigurację pod kątem błędów.

Dlloyd
źródło
aa ha! bardzo przydatne Wydaje mi się, że: lokalizacja "/ blog / wp-admin" znajduje się poza lokalizacją "/blog/.*\.php$" w /etc/nginx/site-configs/wordpress.conf:1 ... ciekawe , daje mi coś do zrobienia!
Huw
2
ARGH! Trzy godziny poszukiwań i okazuje się, że przegapiłem; Dzięki za wszelką pomoc, która okazała się niezbędna w jej wyśledzeniu. Nawiasem mówiąc, jeśli ktokolwiek kiedykolwiek trafi na to pytanie po przeczytaniu postów na stronie Ars Technica. Myślę, że przeszedłem przez nie teraz z grzebieniem z drobnymi zębami!
Huw
4
uruchomienie tego polecenia daje mi, nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successfulale wciąż nie mogę uruchomić nginx
Bill Garrison,
1
@BillGarrison sprawdź syslog i dziennik błędów nginx, aby uzyskać więcej informacji
Dlloyd
44

Uruchom to polecenie, aby znaleźć problem.

sudo nginx -t
Nanhe Kumar
źródło
7

Prawdopodobnie powinieneś sprawdzić błędy w /var/log/nginx/error.log.

W moim przypadku nie dodałem portu dla ipv6. Powinieneś to również zrobić (w przypadku, gdy używasz nginx na porcie innym niż 80): listen [::]:8000 default_server ipv6only=on;

Arvind07
źródło
1
Uwaga: jeśli twoje uprawnienia są błędne /var/log/nginx/error.log, nginx nie będzie mógł zapisać błędu i po cichu zawiedzie. nginx -c /etc/nginx/nginx.conf -tPomoże Ci sprawdzenie konfiguracji zgodnie z zaakceptowaną odpowiedzią ( ).
user898763452
5

Uruchomiłem następujące polecenia, aby przywrócić działanie Nginx:

# remove nginx conf files
apt-get purge nginx

# reinstall
apt-get install nginx

# make sure the default site is enabled
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

# start nginx
sudo /etc/init.d/nginx start 

nginx już działa !!

Aaron Lelevier
źródło
2
Nie musisz usuwać i czyścić, po prostu czyść. I trudno wiedzieć, czy to będzie odpowiedź na pytanie, ponieważ czyszczenie usunie wszystkie pliki konfiguracyjne.
Panther
1
Idealnie - i dla innych użytkowników wolałbym uzyskać maksymalny odczyt, gdzie wystąpiła awaria i naprawić moją obecną instalację zamiast czyszczenia i rozpoczynania od zera
Huw
1
@ bodhi.zazen Poprawiłem swoją odpowiedź. Co do tego, co powiedział „Huw”, zgadzam się. Po prostu byłem na początku instalowania i konfigurowania, nginxwięc nie było wielkim problemem, aby po prostu go usunąć i zacząć od nowa, zamiast wyśledzić błąd. Dziękuję wam obojgu za waszą stronę.
Aaron Lelevier
w moim przypadku musiałem tylko zacząć korzystać z tego polecenia sudo /etc/init.d/nginx start
Sizzling Code
3

Sprawdź swoją /etc/nginx/sites-available/defaultlub dowolną kopię tego, której używasz, i upewnij się, że odkomentujesz (usuniesz #) }wszystko, czego możesz potrzebować w związku z tym, {co prawdopodobnie zostało odkomentowane. To był mój problem.

Kenisfis
źródło
2

Musisz wyczyścić nginx, a następnie wpisz w wierszu polecenia:

ln -s /etc/nginx/sites-availbale/default .etc/nginx/sites-enabled/default
użytkownik445400
źródło
Czy masz na myśli apt-get purge?
RolandiXor
2

ponownie otwórz wszystkie pliki, używając

nginx -s reopen

następnie użyj

nginx -s reload

Ponieważ pomoc nginx pokazuje, że tak się stanie, przeładuj nginx wysyłając sygnał do procesu master.it powinien działać.

Żądanie: proszę purgenie wydawać poleceń bez ostrzeżenia, ponieważ może to powodować problemy dla początkujących (wszystkie konfiguracje zostaną utracone) ... DUŻY kłopot.

Anto
źródło
1

Jeśli występują takie błędy, możesz to sprawdzić journalctl -xe.
Zawiera wiele informacji o tym, co się stało w sprawie systemu operacyjnego.
możesz znaleźć linię lub po prostu journalctl -xe | grep nginxdowiedzieć się, co się stało z Nginx, gdy próbował uruchomić się sam.

AmirHossein
źródło