Android

Configurarea erorii nginx și a jurnalului de acces

Функция DLookup в базе Access

Функция DLookup в базе Access

Cuprins:

Anonim

Nginx este un server proxy HTTP de înaltă performanță și proxy invers, responsabil pentru gestionarea încărcării unora dintre cele mai mari site-uri de pe Internet. Când gestionați serverele web NGINX, una dintre cele mai frecvente sarcini pe care le veți efectua este verificarea fișierelor de jurnal.

Știind cum să configurați și să citiți jurnalele este foarte util atunci când depanați problemele serverului sau aplicației, deoarece furnizează informații detaliate de depanare.

Nginx scrie înregistrări ale evenimentelor sale în două tipuri de jurnale: jurnalele de acces și jurnalele de erori. Jurnalele de acces scriu informații despre solicitările clientului, iar jurnalele de eroare scriu informații despre problemele serverului și ale aplicației.

Acest articol prezintă modul de configurare și citire a jurnalelor de acces și erori Nginx.

Configurarea jurnalului de acces

Ori de câte ori o solicitare client este procesată, Nginx generează un nou eveniment în jurnalul de acces. Fiecare înregistrare de eveniment conține o marcă de timp și include diverse informații despre client și resursa solicitată. Jurnalele de acces vă pot arăta locația vizitatorilor, pagina pe care o vizitează, cât timp petrec pe pagină și multe altele.

Directiva log_format vă permite să definiți formatul mesajelor înregistrate. Directiva access_log activează și stabilește locația fișierului jurnal și formatul utilizat.

Cea mai de bază sintaxă a directivei access_log este următoarea:

access_log log_file log_format;

În cazul în care log_file este calea completă către fișierul jurnal, iar log_format este formatul folosit de fișierul jurnal.

Jurnalul de acces poate fi activat fie în blocul directivelor http , server sau location .

În mod implicit, jurnalul de acces este activat global în directiva http din fișierul principal de configurare Nginx.

/etc/nginx/nginx.conf

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

Pentru o mai bună întreținere, se recomandă să setați un fișier jurnal de acces separat pentru fiecare bloc de server. Directiva access_log setată în directiva server înlocuiește pe cea setată în directiva http (nivel superior).

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

Dacă nu este specificat niciun format de jurnal, Nginx folosește formatul predefinit care arată astfel:

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

Pentru a schimba formatul de înregistrare fie treceți peste setarea implicită, fie definiți una nouă. De exemplu, pentru a defini un nou format de logare numit principal, care va extinde formatul combinat cu valoarea care arată antetul X-Forwarded-For adăugați următoarea definiție în directiva http sau server :

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

Pentru a utiliza noul format, specificați numele acestuia după fișierul jurnal, după cum se arată mai jos:

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

În timp ce jurnalul de acces oferă informații foarte utile. este nevoie de spațiu pe disc și poate afecta performanța serverului. Dacă serverul dvs. are resurse reduse și aveți un site web ocupat, este posibil să doriți să dezactivați jurnalul de acces. Pentru aceasta, setați valoarea directivei access_log pe off :

access_log off;

Configurarea jurnalului de erori

Nginx scrie mesaje despre aplicația și erorile generale ale serverului în fișierul jurnal de erori. Dacă întâmpinați erori în aplicația dvs. web, jurnalul de erori este primul loc pentru a începe problemele de depanare.

Directiva error_log activează și stabilește locația și nivelul de severitate al jurnalului de erori. Acesta ia următoarea formă și poate fi setat într-un bloc http , server sau location :

error_log log_file log_level

Parametrul log_level stabilește nivelul de înregistrare. Mai jos sunt listate după severitatea lor (de la mic la mare):

  • debug - Mesaje de depanare. info - Mesaje informative. notice - Anunturi warn - Avertismente. error - Erori la procesarea unei solicitări. crit - Probleme critice. Necesită o acțiune promptă. alert - Alerte. Trebuie luate măsuri imediat. emerg - Situație de urgență. Sistemul este într-o stare inutilizabilă.

Fiecare nivel de jurnal include nivelurile superioare. De exemplu, dacă setați nivelul de jurnal pentru a warn , Nginx va înregistra, de asemenea, mesajele de error , de crit , de alert și de emerg .

Când parametrul log_level nu este specificat, acesta este implicit la error .

În mod implicit, directiva error_log este definită în directiva http din fișierul principal nginx.conf:

/etc/nginx/nginx.conf

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

La fel ca și în jurnalele de acces, se recomandă setarea unui fișier de jurnal de eroare separat pentru fiecare bloc de server, care înlocuiește setarea moștenită de la nivelurile superioare.

De exemplu, pentru a seta jurnalul de erori al domeniului.com pentru a vă warn că veți folosi:

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

Ori de câte ori modificați fișierul de configurare, trebuie să reporniți serviciul Nginx pentru ca modificările să aibă efect.

Locația fișierelor de jurnal

În mod implicit la majoritatea distribuțiilor Linux, cum ar fi Ubuntu, CentOS și Debian, jurnalele de acces și erori sunt localizate în directorul /var/log/nginx .

Citirea și înțelegerea fișierelor de jurnal Nginx

Puteți deschide și analiza fișierele jurnal folosind comenzi standard precum cat , less , grep , cut , awk ș.a.

Iată un exemplu de înregistrare din fișierul jurnal de acces care utilizează formatul de jurnal combinat implicit 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"

Să descompunem ce înseamnă fiecare câmp al înregistrării:

  • $remote_addr - 192.168.33.1 - Adresa IP a clientului care face solicitarea. $remote_user - - - Utilizator autentificat HTTP. Când numele de utilizator nu este setat, acest câmp arată - . - - Ora serverului local. "$request" - "GET / - tipul, calea și protocolul solicitării. $status - 200 - Codul de răspuns al serverului. $body_bytes_sent - 396 - Mărimea răspunsului serverului în octeți. "$http_referer" - "-" - URL-ul sesizării. "$http_user_agent" - Mozilla/5.0… - Agentul utilizator al clientului (browser web).

Folosiți comanda tail pentru a urmări fișierul jurnal în timp real:

tail -f access.log

Concluzie

Fișierele de jurnal vă oferă informații utile despre problemele serverului și modul în care vizitatorii interacționează cu site-ul dvs. web.

Nginx vă permite să configurați jurnalele de acces și erori în funcție de nevoile dvs.

Nginx