Introducción
Nginx es un servidor proxy inverso y HTTP de código abierto de alto rendimiento responsable de administrar la carga de algunos de los sitios más grandes de Internet. Al administrar servidores web NGINX, una de las tareas más frecuentes que realiza es verificar los archivos de registro.
Saber cómo configurar y leer los registros es muy útil al solucionar problemas de su servidor o aplicación, ya que proporcionan información detallada de depuración.
Nginx escribe sus registros de eventos en dos tipos de registros: registros de acceso y registros de errores. Los registros de acceso escriben información sobre las solicitudes de los clientes y los registros de errores escriben información sobre los problemas del servidor y de las aplicaciones.
Este artículo le muestra cómo configurar y leer los registros de acceso y error de Nginx.
Si desea configurar los registros de acceso y los registros de errores en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no usa el usuario root, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Configurar registros de acceso
Cada vez que se procesa una solicitud de cliente, Nginx genera un nuevo evento en el registro de acceso. Cada registro de evento contiene una marca de tiempo e incluye información diversa sobre el cliente y el recurso solicitado. Los registros de acceso pueden mostrarle dónde están los visitantes, qué página visitan, cuánto tiempo pasan en la página y más.
La log_format
permite definir el formato de los mensajes registrados. La access_log
habilita y establece la ubicación del archivo de registro y el formato utilizado.
La sintaxis más básica de la access_log
es la siguiente:
access_log log_file log_format;
log_file
es la ruta completa al archivo de registro y log_format
es el formato utilizado por el archivo de registro.
El registro de acceso se puede activar en el bloque de directiva http
, server
o location
De forma predeterminada, el registro de acceso está habilitado globalmente en la http
dentro del archivo de configuración principal de Nginx /etc/nginx/nginx.conf
:
http {...
access_log /var/log/nginx/access.log;...
}
Para una mejor legibilidad, se recomienda que configure un archivo de registro de acceso separado para cada bloque de servidor. La access_log
establecida en la server
reemplaza a la establecida en la /etc/nginx/conf.d/domain.com.conf
http
(top level) /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;...
}
}
Si no se especifica ningún formato de registro, Nginx usa el formato combinado predeterminado que se ve así:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
Para cambiar el formato de grabación, reemplace la configuración predeterminada o defina una nueva. Por ejemplo, para definir un nuevo formato de publicación llamado personalizado (personalizado) que extenderá el formato combinado con el X-Forwarded-For
, agregue la siguiente definición en la directiva http
o server
log_format custom '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
Para usar el nuevo formato, especifique el nombre después del archivo de registro como se muestra a continuación:
access_log /var/log/nginx/access.log custom;
Si bien el registro de acceso proporciona información muy útil, ocupan espacio en el disco y pueden afectar el rendimiento del servidor. Si su servidor tiene pocos recursos y tiene un sitio web ocupado, es posible que desee deshabilitar el registro de acceso. Para hacer esto, establezca el valor de la directiva access_log
off
:
access_log off;
Configurar el registro de errores
Nginx escribe mensajes de aplicaciones y errores generales del servidor en el archivo de registro de errores. Si se producen errores en la aplicación web, el registro de errores es el primer lugar para comenzar a solucionar problemas.
La error_log
habilita y establece la ubicación y la gravedad del registro de errores. Tiene la siguiente forma y se puede configurar dentro de un bloque http
, server
o location
error_log log_file log_level
El log_level
establece el nivel de registro. Los niveles enumerados por gravedad (de menor a mayor) se enumeran a continuación:
debug
: depurar mensajes.info
: mensajes de información.notice
- Avisos.warn
- Advertencias.error
: errores al procesar una solicitud.crit
- Problemas críticos. Requiere una acción rápida.alert
: alertas. Se deben tomar medidas de inmediato.emerg
- Situación de emergencia. El sistema está en un estado inutilizable.
Cada nivel de registro incluye los niveles más altos. Por ejemplo, si configura el nivel de registro para warn
, Nginx también registrará mensajes: error
, crit
, alert
y emerg
.
Cuando no se especifica el parámetro log_level
error
.
De forma predeterminada, la error_log
se define en la http
dentro del archivo /etc/nginx/nginx.conf
http {...
error_log /var/log/nginx/error.log;...
}
Al igual que con los registros de acceso, se recomienda que configure un archivo de registro de errores por separado para cada bloque de servidor, que anula la configuración heredada de los niveles superiores.
Por ejemplo, para configurar el registro de error en el dominio domain.com, usaría warn
:
http {...
error_log /var/log/nginx/error.log;...
server {
server_name domain.com
error_log /var/log/nginx/domain.error.log warn;...
}
}
Siempre que se cambie el archivo de configuración, se debe reiniciar el servicio Nginx para que los cambios surtan efecto.
Ubicación de los archivos de registro
De forma predeterminada, en la mayoría de las distribuciones de Linux, como Ubuntu, CentOS y Debian, los registros de acceso y error se encuentran en el /var/log/nginx
.
Leer y comprender los archivos de registro de Nginx
Los archivos de registro se pueden abrir y analizar mediante comandos estándar como cat
, less
, grep
, cut
, awk
, etc.
Aquí hay un registro de muestra del archivo de registro de acceso que usa el formato de registro de combinación Nginx predeterminado:
192.168.22.1 - - [14/Oct/2019:22:11:36 +0000] "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"
Analicemos lo que significa cada campo del registro:
$remote_addr
-192.168.22.1
- La dirección IP del cliente que realiza la solicitud.$remote_user
--
- Usuario autenticado HTTP. Cuando no se establece el nombre de usuario, este campo muestra-
.[$time_local]
-[14/Oct/2019:22:11:36 +0000]
- Hora del servidor local."$request"
-"GET /HTTP/1.1"
- Tipo de solicitud, ruta y protocolo.$status
-200
- El código de respuesta del servidor.$body_bytes_sent
-396
- El tamaño de la respuesta del servidor en bytes."$http_referer"
-"-"
: la URL de referencia."$http_user_agent"
-Mozilla/5.0...
- El agente de usuario del cliente (navegador web).
Utilice el tail
para ver el archivo de registro en tiempo real:
tail -f access.log
Conclusión
Los registros de archivos proporcionan información útil sobre problemas del servidor y cómo los visitantes interactúan con su sitio web.
Nginx le permite configurar los registros de acceso y error según sus necesidades.