Android

De nginx-fout en het toegangslogboek configureren

Key Files, Commands, and Directories with NGINX

Key Files, Commands, and Directories with NGINX

Inhoudsopgave:

Anonim

Nginx is een open-source, krachtige HTTP- en reverse proxy-server die verantwoordelijk is voor het afhandelen van enkele van de grootste sites op internet. Bij het beheer van NGINX-webservers is het controleren van de logbestanden een van de meest voorkomende taken die u uitvoert.

Weten hoe de logbestanden moeten worden geconfigureerd en gelezen, is erg handig bij het oplossen van server- of applicatieproblemen, omdat deze gedetailleerde foutopsporingsinformatie bieden.

Nginx schrijft records van zijn gebeurtenissen in twee soorten logboeken: toegangslogboeken en foutenlogboeken. Toegangslogboeken schrijven informatie over clientaanvragen en foutenlogboeken schrijven informatie over de server- en toepassingsproblemen.

In dit artikel wordt beschreven hoe u de Nginx-toegangs- en foutenlogboeken kunt configureren en lezen.

Het toegangslogboek configureren

Wanneer een clientverzoek wordt verwerkt, genereert Nginx een nieuwe gebeurtenis in het toegangslogboek. Elk gebeurtenisrecord bevat een tijdstempel en bevat verschillende informatie over de client en de gevraagde bron. Toegangslogboeken kunnen u de locatie van de bezoekers laten zien, de pagina die ze bezoeken, hoeveel tijd ze op de pagina doorbrengen en nog veel meer.

Met de richtlijn log_format kunt u het formaat van gelogde berichten definiëren. Met de access_log wordt de locatie van het logbestand en het gebruikte formaat access_log en ingesteld.

De meest elementaire syntaxis van de access_log richtlijn is als volgt:

access_log log_file log_format;

Waar log_file het volledige pad naar het logbestand is en log_format het formaat is dat door het logbestand wordt gebruikt.

Het toegangslogboek kan worden ingeschakeld in een http , server of locatierichtlijnblok.

Standaard is het toegangslogboek wereldwijd ingeschakeld in de http instructie in het hoofdconfiguratiebestand van Nginx.

/etc/nginx/nginx.conf

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

Voor een beter onderhoud wordt aanbevolen om voor elk serverblok een afzonderlijk toegangslogbestand in te stellen. De access_log richtlijn die is ingesteld in de access_log , heeft voorrang boven die welke is ingesteld in de http (hoger niveau) -richtlijn.

/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;… } }

Als er geen logboekindeling is opgegeven, gebruikt Nginx de vooraf gedefinieerde gecombineerde indeling die er als volgt uitziet:

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

Als u het logboekformaat wilt wijzigen, vervangt u de standaardinstelling of definieert u een nieuwe. Als u bijvoorbeeld een nieuw logboekformaat wilt definiëren met de naam main, dat het gecombineerde formaat uitbreidt met de waarde die de X-Forwarded-For header weergeeft, voegt u de volgende definitie toe in de http of serverrichtlijn:

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

Om de nieuwe indeling te gebruiken, geeft u de naam op na het logboekbestand, zoals hieronder wordt weergegeven:

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

Terwijl het toegangslogboek zeer nuttige informatie biedt. het neemt schijfruimte in beslag en kan de serverprestaties beïnvloeden. Als uw server weinig bronnen heeft en u een drukke website heeft, wilt u misschien het toegangslogboek uitschakelen. Om dit te doen, stelt u de waarde van de access_log richtlijn in op off :

access_log off;

Het foutenlogboek configureren

Nginx schrijft berichten over de toepassing en algemene serverfouten in het foutenlogbestand. Als u fouten in uw webtoepassing ondervindt, is het foutenlogboek de eerste plaats om te beginnen met het oplossen van problemen.

De error_log instructie activeert en stelt de locatie en het ernstniveau van het foutenlogboek in. Het heeft de volgende vorm en kan worden ingesteld binnen een http , server of location :

error_log log_file log_level

Met de parameter log_level wordt het log_level ingesteld. Hieronder staan ​​de niveaus op volgorde van ernst (van laag naar hoog):

  • debug - Debuggen van berichten. info - informatieve berichten. notice - Kennisgevingen. warn - Waarschuwingen. error - Fouten tijdens het verwerken van een aanvraag. crit - Kritieke kwesties. Vereist een snelle actie. alert - Waarschuwingen. Er moet onmiddellijk actie worden ondernomen. emerg - Noodsituatie. Het systeem bevindt zich in een onbruikbare staat.

Elk logboekniveau bevat de hogere niveaus. Als u bijvoorbeeld het emerg om te warn , registreert Nginx ook de error , emerg , emerg en emerg berichten.

Wanneer de parameter log_level niet is opgegeven, wordt standaard een error .

Standaard wordt de error_log instructie gedefinieerd in de http instructie in het hoofdbestand van nginx.conf:

/etc/nginx/nginx.conf

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

Hetzelfde als bij toegangslogboeken, wordt aanbevolen om voor elk serverblok een afzonderlijk foutenlogbestand in te stellen, dat de instelling overschrijft die is overgenomen van de hogere niveaus.

Als u bijvoorbeeld het foutenlogboek van domain.com wilt instellen om te warn u:

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

Wanneer u het configuratiebestand wijzigt, moet u de Nginx-service opnieuw opstarten om de wijzigingen van kracht te laten worden.

Locatie van de logbestanden

Standaard zijn bij de meeste Linux-distributies, zoals Ubuntu, CentOS en Debian, toegangs- en foutenlogboeken te vinden in de map /var/log/nginx .

Nginx-logbestanden lezen en begrijpen

U kunt de logbestanden openen en parseren met standaardopdrachten zoals cat , less , grep , cut , awk , enzovoort.

Hier is een voorbeeldrecord uit het toegangslogbestand dat de standaard Nginx-logboekindeling gebruikt:

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"

Laten we eens kijken wat elk veld van het record betekent:

  • $remote_addr - 192.168.33.1 - Het IP-adres van de client die het verzoek indient. $remote_user - - - HTTP-geverifieerde gebruiker. Als de gebruikersnaam niet is ingesteld, toont dit veld - . - - Lokale servertijd. "$request" - "GET / - Het aanvraagtype, pad en protocol. $status - 200 - De reactiecode van de server. $body_bytes_sent - 396 - De grootte van de serverrespons in bytes. "$http_referer" - "-" - De URL van de verwijzing. "$http_user_agent" - Mozilla/5.0… - De user-agent van de client (webbrowser).

Gebruik de opdracht tail om het logbestand in realtime te bekijken:

tail -f access.log

Conclusie

Logbestanden bieden u nuttige informatie over serverproblemen en hoe bezoekers omgaan met uw website.

Met Nginx kunt u de toegangs- en foutenlogboeken configureren volgens uw behoeften.

nginx