Android

Konfigurowanie błędu nginx i dziennika dostępu

Nginx Web Server configuration with Examples

Nginx Web Server configuration with Examples

Spisu treści:

Anonim

Nginx to wysokowydajny serwer HTTP i odwrotny serwer proxy typu open source, odpowiedzialny za obsługę niektórych największych witryn w Internecie. Podczas zarządzania serwerami sieciowymi NGINX jednym z najczęściej wykonywanych zadań jest sprawdzanie plików dziennika.

Umiejętność konfigurowania i odczytywania dzienników jest bardzo przydatna podczas rozwiązywania problemów z serwerem lub aplikacjami, ponieważ dostarczają one szczegółowych informacji o debugowaniu.

Nginx zapisuje swoje zdarzenia w dwóch typach dzienników: dzienników dostępu i dzienników błędów. Dzienniki dostępu zapisują informacje o żądaniach klientów, a dzienniki błędów zapisują informacje o problemach z serwerem i aplikacjami.

W tym artykule opisano, jak skonfigurować i odczytać dzienniki dostępu i błędów Nginx.

Konfigurowanie dziennika dostępu

Za każdym razem, gdy żądanie klienta jest przetwarzane, Nginx generuje nowe zdarzenie w dzienniku dostępu. Każdy rekord zdarzenia zawiera znacznik czasu i zawiera różne informacje o kliencie i żądanym zasobie. Dzienniki dostępu mogą pokazywać lokalizację odwiedzających, odwiedzaną stronę, ile czasu spędzają na stronie i wiele więcej.

Dyrektywa log_format pozwala zdefiniować format rejestrowanych wiadomości. Dyrektywa access_log włącza i ustawia lokalizację pliku dziennika oraz używany format.

Najbardziej podstawowa składnia dyrektywy access_log jest następująca:

access_log log_file log_format;

Gdzie log_file to pełna ścieżka do pliku dziennika, a log_format to format używany przez plik dziennika.

Dziennik dostępu można włączyć w bloku http , server lub dyrektyw dotyczących location .

Domyślnie dziennik dostępu jest globalnie włączony w dyrektywie http w głównym pliku konfiguracyjnym Nginx.

/etc/nginx/nginx.conf

http {… access_log /var/log/nginx/access.log;… }

Dla lepszej konserwacji zaleca się ustawienie osobnego pliku dziennika dostępu dla każdego bloku serwera. Dyrektywa access_log ustawiona w dyrektywie server zastępuje jedną ustawioną w dyrektywie http (wyższy poziom).

/etc/nginx/conf.d/domain.com.conf

http {… access_log /var/log/nginx/access.log;… server { server_name domain.com access_log /var/log/nginx/domain.access.log;… } }

Jeśli nie określono formatu dziennika, Nginx używa predefiniowanego formatu łączonego, który wygląda następująco:

log_format combined '$remote_addr - $remote_user ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';

Aby zmienić format rejestrowania, należy zastąpić ustawienie domyślne lub zdefiniować nowe. Na przykład, aby zdefiniować nowy format rejestrowania o nazwie main, który rozszerzy łączony format o wartość pokazującą nagłówek X-Forwarded-For dodaj następującą definicję w dyrektywie http lub server :

log_format custom '$remote_addr - $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

Aby użyć nowego formatu, podaj jego nazwę po pliku dziennika, jak pokazano poniżej:

access_log /var/log/nginx/access.log custom;

Podczas gdy dziennik dostępu zapewnia bardzo przydatne informacje. zajmuje miejsce na dysku i może wpływać na wydajność serwera. Jeśli na twoim serwerze brakuje zasobów i masz zajętą ​​stronę internetową, możesz chcieć wyłączyć dziennik dostępu. Aby to zrobić, ustaw wartość dyrektywy access_log na off :

access_log off;

Konfigurowanie dziennika błędów

Nginx zapisuje komunikaty o aplikacji i ogólnych błędach serwera w pliku dziennika błędów. Jeśli występują błędy w aplikacji internetowej, dziennik błędów jest pierwszym miejscem do rozpoczęcia rozwiązywania problemów.

Dyrektywa error_log włącza i ustawia położenie oraz poziom ważności dziennika błędów. Ma on następującą formę i może być ustawiony w obrębie http , server lub bloku location :

error_log log_file log_level

Parametr log_level określa poziom rejestrowania. Poniżej znajdują się poziomy wymienione według ich ważności (od niskiego do wysokiego):

  • debug - debugowanie wiadomości. info - wiadomości informacyjne. notice - powiadomienia. warn - Ostrzeżenia. error - Błędy podczas przetwarzania żądania. crit - Krytyczne problemy. Wymaga szybkiej akcji. alert - Alerty. Działania należy podjąć natychmiast. emerg - sytuacja nadzwyczajna. System jest niezdatny do użytku.

Każdy poziom dziennika obejmuje wyższe poziomy. Na przykład, jeśli ustawisz poziom rejestrowania na warn , Nginx będzie także rejestrował error o error , crit , alert i komunikatach emerg .

Gdy parametr log_level nie jest określony, domyślnie jest to error .

Domyślnie dyrektywa error_log jest zdefiniowana w dyrektywie http w głównym pliku nginx.conf:

/etc/nginx/nginx.conf

http {… error_log /var/log/nginx/error.log;… }

Podobnie jak w przypadku dzienników dostępu, zaleca się ustawienie osobnego pliku dziennika błędów dla każdego bloku serwera, który zastąpi ustawienie odziedziczone z wyższych poziomów.

Na przykład, aby ustawić dziennik błędów domeny.com, aby warn , że użyjesz:

http {… error_log /var/log/nginx/error.log;… server { server_name domain.com error_log /var/log/nginx/domain.error.log warn;… } }

Za każdym razem, gdy modyfikujesz plik konfiguracyjny, musisz ponownie uruchomić usługę Nginx, aby zmiany odniosły skutek.

Lokalizacja plików dziennika

Domyślnie w większości dystrybucji Linuksa, takich jak Ubuntu, CentOS i Debian, dzienniki dostępu i dzienniki błędów znajdują się w katalogu /var/log/nginx .

Czytanie i zrozumienie plików dziennika Nginx

Możesz otwierać i analizować pliki dziennika za pomocą standardowych poleceń, takich jak cat , less , grep , cut , awk i tak dalej.

Oto przykładowy rekord z pliku dziennika dostępu, który używa domyślnego formatu dziennika Nginx:

192.168.33.1 - - "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"

Rozważmy, co oznacza każde pole rekordu:

  • $remote_addr - 192.168.33.1 - Adres IP klienta $remote_addr żądanie. $remote_user - - - Uwierzytelniony użytkownik HTTP. Gdy nazwa użytkownika nie jest ustawiona, w polu tym widnieje - . - - Czas lokalnego serwera. "$request" - "GET / - typ, ścieżka i protokół żądania. $status - 200 - Kod odpowiedzi serwera. $body_bytes_sent - 396 - Rozmiar odpowiedzi serwera w bajtach. "$http_referer" - "-" - Adres URL odwołania. "$http_user_agent" - Mozilla/5.0… - Agent użytkownika klienta (przeglądarki internetowej).

Użyj polecenia tail aby oglądać plik dziennika w czasie rzeczywistym:

tail -f access.log

Wniosek

Pliki dziennika dostarczają przydatnych informacji o problemach z serwerem i o tym, jak odwiedzający wchodzą w interakcję z witryną.

Nginx pozwala skonfigurować dzienniki dostępu i dzienniki błędów zgodnie z potrzebami.

nginx