Modyfikując ustawienia w Nginx dość powszechnym zachowaniem jest jego restart bez uprzedniego sprawdzenia konfiguracji. Może prowadzić to do sytuacji w której zawartość wszystkich stron nie jest serwowana i trzeba możliwie szybko znaleźć i naprawić błąd.
Chesz przetestować działanie poniższych instrukcji, a nie masz dostępu do serwera Linuxowego? Po rejestacji na DigitalOcean otrzymasz 100 dolarów do wykorzystania w ciągu 60 dni, a z przyjaznym interfejsem uruchomisz ulubioną dystrybucję w ciągu paru minut.
Jaka jest różnica między przeładowaniem (reload) a ponownym uruchomieniem (restartem) Nginxa?
Korzystanie z opcji reload jest bezpieczniejsze albowiem automatycznie przeprowadzane jest sprawdzenie poprawności konfiguracji oraz, jeśli wszystko jest w porządku, jej załadowanie. Następnie uruchamiane są nowe procesy obsługujące żądania HTTP przy jednoczesnym zamknięciu starych.
Z drugiej strony, przy czym zachowanie to może zależeć od systemu, w przypadku błędu konfiguracji użytkownik nie jest o tym informowany. Ujawni się on dopiero podczas restartu usługi bądź gdy będzie ona uruchamiana przy starcie serwera.
Restart polega na zatrzymaniu głównego procesu Nginx oraz obsługujących żądania HTTP, a następnie uruchomienie ich na nowo. O ile zatrzymanie procesu zawsze się uda, to błędy w konfiguracji uniemożliwią jego ponowne uruchomienie.
Choć zawsze warto wpierw korzystać z przeładowania Nginxa to istnieją przypadki w których konieczny jest restart.
Niezależnie czy stosowane będzie przeładowanie bądź ponowne uruchomienie warto przed tą operacją skorzystać z polecenia sudo nginx -t
które wywoła sprawdzenie konfiguracji serwera oraz wypisze ewentualne błędy.
Można także uruchamiać reload bądź restart jedynie w sytuacji gdy sprawdzenie ustawień się powiedzie. W tym celu należy użyć sudo nginx -t && sudo systemctl reload nginx
bądź sudo nginx -t && sudo systemctl restart nginx
.
radek@centos.local:~$ sudo nginx -t && sudo systemctl restart nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
radek@centos.local:~$
Skomentuj