androide

Configurazione dell'errore nginx e del registro di accesso

Day 3 Keynote: Made Here Together (Cloud Next '18)

Day 3 Keynote: Made Here Together (Cloud Next '18)

Sommario:

Anonim

Nginx è un server HTTP e proxy inverso open source ad alte prestazioni responsabile della gestione del carico di alcuni dei più grandi siti su Internet. Quando si gestiscono i server Web NGINX, una delle attività più frequenti che si eseguono è la verifica dei file di registro.

Sapere come configurare e leggere i registri è molto utile durante la risoluzione dei problemi del server o dell'applicazione in quanto forniscono informazioni dettagliate sul debug.

Nginx scrive i record dei suoi eventi in due tipi di log: log di accesso e log degli errori. I registri di accesso scrivono informazioni sulle richieste del client e i registri di errori scrivono informazioni sul server e sui problemi dell'applicazione.

Questo articolo illustra come configurare e leggere i log degli errori e di accesso a Nginx.

Configurazione del registro di accesso

Ogni volta che viene elaborata una richiesta client, Nginx genera un nuovo evento nel registro di accesso. Ogni record di eventi contiene un timestamp e include varie informazioni sul client e sulla risorsa richiesta. I registri di accesso possono mostrarti la posizione dei visitatori, la pagina che visitano, quanto tempo trascorrono sulla pagina e molto altro.

La direttiva log_format consente di definire il formato dei messaggi registrati. La direttiva access_log abilita e imposta la posizione del file di registro e il formato utilizzato.

La sintassi più semplice della direttiva access_log è la seguente:

access_log log_file log_format;

Dove log_file è il percorso completo del file di registro e log_format è il formato utilizzato dal file di registro.

Il registro di accesso può essere abilitato nel blocco http , server o direttive di location .

Per impostazione predefinita, il registro di accesso è abilitato a livello globale nella direttiva http all'interno del file di configurazione principale di Nginx.

/etc/nginx/nginx.conf

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

Per una migliore manutenibilità, si consiglia di impostare un file di registro di accesso separato per ciascun blocco server. La direttiva access_log impostata nella direttiva server sovrascrive quella impostata nella direttiva http (livello superiore).

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

Se non viene specificato alcun formato di registro, Nginx utilizza il formato combinato predefinito che assomiglia a questo:

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

Per modificare il formato di registrazione, sostituire l'impostazione predefinita o definirne una nuova. Ad esempio, per definire un nuovo formato di registrazione denominato main che estenderà il formato combinato con il valore che mostra l'intestazione X-Forwarded-For , aggiungere la seguente definizione nella direttiva http o server :

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

Per utilizzare il nuovo formato, specificare il nome dopo il file di registro come mostrato di seguito:

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

Mentre il registro di accesso fornisce informazioni molto utili. occupa spazio su disco e può influire sulle prestazioni del server. Se il tuo server ha poche risorse e hai un sito Web occupato, potresti voler disabilitare il registro di accesso. Per fare ciò, impostare il valore della direttiva access_log su off :

access_log off;

Configurazione del registro errori

Nginx scrive messaggi sull'applicazione e errori generali del server nel file di registro degli errori. Se si verificano errori nell'applicazione Web, il registro degli errori è il primo punto da cui iniziare per la risoluzione dei problemi.

La direttiva error_log abilita e imposta la posizione e il livello di gravità del registro errori. Prende il seguente modulo e può essere impostato all'interno di un http , server o blocco location :

error_log log_file log_level

Il parametro log_level imposta il livello di registrazione. Di seguito sono elencati i livelli in base alla loro gravità (dal più basso al più alto):

  • debug - Debug dei messaggi. info - Messaggi informativi. notice - Avvisi. warn - Avvertenze. error : errori durante l'elaborazione di una richiesta. crit - Problemi critici. Richiede un'azione rapida. alert - Avvisi. È necessario agire immediatamente. emerg - Situazione di emergenza. Il sistema è in uno stato inutilizzabile.

Ogni livello di registro include i livelli più alti. Ad esempio, se si imposta il livello di registro su warn , Nginx registra anche i messaggi di error , crit , alert ed emerg .

Quando il parametro log_level non è specificato, per impostazione predefinita è un error .

Per impostazione predefinita, la direttiva error_log è definita nella direttiva http all'interno del file nginx.conf principale:

/etc/nginx/nginx.conf

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

Come per i registri di accesso, si consiglia di impostare un file di registro degli errori separato per ciascun blocco server, che sostituisce l'impostazione ereditata dai livelli superiori.

Ad esempio, per impostare il log degli errori di domain.com in modo da warn dovrai utilizzare:

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

Ogni volta che si modifica il file di configurazione, è necessario riavviare il servizio Nginx per rendere effettive le modifiche.

Posizione dei file di registro

Di default sulla maggior parte delle distribuzioni Linux, come Ubuntu, CentOS e Debian, i log di accesso ed errore si trovano nella directory /var/log/nginx .

Lettura e comprensione dei file di registro di Nginx

È possibile aprire e analizzare i file di registro utilizzando i comandi standard come cat , less , grep , cut , awk e così via.

Ecco un record di esempio dal file di registro di accesso che utilizza il formato di registro Nginx di combinazione predefinito:

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"

Analizziamo cosa significa ogni campo del record:

  • $remote_addr - 192.168.33.1 - L'indirizzo IP del client che effettua la richiesta. $remote_user - - - Utente autenticato HTTP. Quando il nome utente non è impostato, questo campo mostra - . - - Ora del server locale. "$request" - "GET / - Tipo di richiesta, percorso e protocollo. $status - 200 - Il codice di risposta del server. $body_bytes_sent - 396 - La dimensione della risposta del server in byte. "$http_referer" - "-" - L'URL del referral. "$http_user_agent" - Mozilla/5.0… - L'agente utente del client (browser web).

Utilizzare il comando tail per guardare il file di registro in tempo reale:

tail -f access.log

Conclusione

I file di registro forniscono informazioni utili sui problemi del server e su come i visitatori interagiscono con il tuo sito Web.

Nginx ti consente di configurare l'accesso e i log degli errori in base alle tue esigenze.

nginx