
📅 Publicado el 29 de octubre, 2026 · Por Equipo RedServicio
Si administras un servidor con Nginx, más pronto que tarde vas a necesitar mirar los logs de acceso. Ahí está la verdad de lo que pasa en tu web: cada visita, cada petición de una imagen, cada intento raro de acceso a un panel. Todo queda escrito en un fichero de texto. Y cuando algo se rompe (o cuando sospechas que alguien anda escaneando tu servidor), esos ficheros suelen ser el mejor punto de partida. En esta guía verás cómo localizarlos, leerlos y configurarlos paso a paso, tanto en un servidor propio como en un hosting gestionado como el de RedServicio, donde el equipo de soporte 24/7 puede echarte una mano con ajustes más finos.
¿Qué son los logs de acceso en Nginx y por qué importan?
Un log de acceso es, en esencia, un fichero de texto plano donde Nginx anota cada petición HTTP que llega al servidor. Nada más, pero nada menos. Por cada visita se guarda la IP del cliente, fecha y hora, la URL pedida, el código de estado HTTP devuelto, el tamaño de la respuesta y el agente de usuario, es decir, el navegador o el bot que hizo la petición.
¿Y para qué sirve todo eso en la práctica?
- Diagnosticar errores: ver qué peticiones devuelven 404, 500 o 503 y rastrear de dónde vienen.
- Detectar ataques: identificar escaneos de vulnerabilidades, fuerza bruta o patrones de tráfico que no cuadran.
- Medir rendimiento: conocer tiempos de respuesta y qué páginas se piden con más frecuencia.
- Generar estadísticas: alimentar herramientas como GoAccess, AWStats o Matomo con datos reales de tráfico.
Sin logs, administrar un servidor web es como conducir con los ojos cerrados. Sabes que la web funciona, sí. Pero cuando falla, no tienes ni idea de por qué.
Dónde encontrar los logs por defecto en tu servidor
En la mayoría de distribuciones Linux (Debian, Ubuntu, CentOS), Nginx deja sus logs de acceso en esta ruta:
/var/log/nginx/access.log
Si quieres ver las últimas líneas en tiempo real, conéctate por SSH y ejecuta:
tail -f /var/log/nginx/access.log
El comando va mostrando las peticiones conforme llegan, algo muy cómodo cuando estás depurando en directo. ¿Prefieres algo estático? tail -n 100 /var/log/nginx/access.log te da las últimas 100 líneas y ya está.
Eso sí, hay matices según cómo tengas montado el servidor:
- Con varios sitios web (server blocks), cada uno puede tener su propio fichero de log definido en su configuración.
- Si hay un panel de control por medio (cPanel, Plesk), la ruta puede cambiar y ser el propio panel quien la gestione.
- Los logs suelen rotarse a diario mediante logrotate, así que te irás encontrando ficheros comprimidos tipo access.log.1.gz.
Y si tu hosting es gestionado con RedServicio, puedes acceder a tus logs directamente desde el panel de control, o pedírselos al soporte técnico, que está disponible 24/7.
Cómo configurar logs de acceso en Nginx: directiva access_log
La directiva que manda aquí es access_log. Su sintaxis básica:
access_log ruta [formato [buffer=tamaño]];
Por ejemplo, para activar el log con el formato predefinido combined:
access_log /var/log/nginx/misitio-access.log combined;
Puedes colocar esta directiva en tres contextos, cada uno con un ámbito distinto:
- Bloque http: afecta a todos los sitios del servidor (es el valor por defecto en nginx.conf).
- Bloque server: define un log específico para un sitio concreto, lo lógico cuando alojas varios dominios.
- Bloque location: registra solo las peticiones a una ruta concreta. Útil, por ejemplo, para auditar algo sensible como /admin.
Un ejemplo práctico en el bloque server de un sitio:
server {
listen 80;
server_name misitio.com;
access_log /var/log/nginx/misitio-access.log;
}
Un detalle que se olvida a menudo: después de tocar la configuración, verifícala con nginx -t y recarga con systemctl reload nginx. Así los cambios aplican sin tirar el servicio.
Crear formatos personalizados con log_format
Por defecto, Nginx registra las peticiones con el formato «combined»: IP del cliente, fecha, método, URL, código de estado y user-agent. Básico, sí. Pero cuando vas a depurar algo concreto, muchas veces te faltan datos. La solución es definir tu propio formato con la directiva log_format dentro del bloque http de la configuración:
- log_format extendido: log_format extendido ‘$remote_addr – $remote_user [$time_local] «$request» $status $body_bytes_sent «$http_referer» «$http_user_agent» $request_time $upstream_response_time’;
Aquí hay dos variables que valen oro. $request_time mide cuánto tardó Nginx en servir la petición completa; $upstream_response_time, cuánto tardó el backend (por ejemplo, PHP-FPM) en responder. ¿Y por qué importan ambas? Porque su comparación te dice dónde está el problema. Si $request_time es alto pero $upstream_response_time bajo, el problema vive en la capa de Nginx. Si ambos son altos, el cuello de botella está en tu aplicación. Sin esa pareja de valores, estarías adivinando.
Otras variables que conviene tener a mano: $http_x_forwarded_for (imprescindible si estás detrás de un proxy o balanceador como Cloudflare, porque la IP remota que verás será la del proxy, no la del cliente real), $request_length para el tamaño de la petición y $gzip_ratio si usas compresión. Una vez definido el formato, actívalo en el bloque server que toque:
- access_log /var/log/nginx/misitio-access.log extendido;
Ojo con un detalle: el nombre del formato debe coincidir exactamente con el definido en log_format. Y cada cambio requiere verificar con nginx -t y recargar el servicio. Es poco, pero olvidarlo es de lo más común. Si manejas un hosting gestionado como el que ofrecemos en RedServicio, nuestro equipo puede dejarte estos formatos configurados y ahorrarte el ajuste fino.
Herramientas para analizar tus logs de acceso
Bien, ya tienes logs generándose correctamente. ¿Y ahora qué? El siguiente paso es sacarles información útil, y ahí cada uno tiene su herramienta según nivel técnico y necesidades:
- GoAccess: probablemente la más popular para análisis en tiempo real desde la terminal. Se instala con un simple apt install goaccess y genera informes interactivos, incluso en HTML. Por ejemplo: goaccess /var/log/nginx/misitio-access.log –log-format=COMBINED. Para un vistazo rápido de visitas, IPs más activas y páginas más solicitadas, es lo que yo usaría primero.
- AWStats: clásico y fiable. Genera informes gráficos detallados de forma programada mediante cron. Su interfaz es anticuada, lo admito, pero para informes mensuales sigue siendo muy completo.
- Comandos básicos de Linux: no subestimes grep, awk y sort. Para ver las 10 IPs que más peticiones realizan: awk ‘{print $1}’ acceso.log | sort | uniq -c | sort -rn | head -10. Una línea. Con eso detectas ataques de fuerza bruta o scrapers agresivos en segundos.
- Soluciones centralizadas: si gestionas varios servidores, plataformas como ELK Stack (Elasticsearch, Logstash, Kibana) o Grafana Loki permiten centralizar y visualizar los logs de todas tus webs en un mismo panel.
Para proyectos pequeños y medianos, GoAccess más unos cuantos comandos de terminal suele ser más que suficiente. Cuando el tráfico crece, sí merece la pena invertir en soluciones centralizadas que permitan correlacionar eventos entre servidores. Cada cosa a su tiempo.
Conclusiones y buenas prácticas para el análisis de tráfico
Los logs de acceso en Nginx son, sencillamente, una fuente de información imprescindible para cualquier webmaster: te dejan entender cómo interactúan los usuarios con tu sitio, detectar errores, identificar tráfico malicioso y afinar el rendimiento. Algunas recomendaciones que, después de ver muchos servidores, considero las básicas:
- Rota los logs con logrotate: sin rotación, los ficheros crecen sin control hasta llenar el disco. Y créeme, descubrirlo por una caída del servidor no es agradable. Configura rotación diaria o semanal con compresión de los ficheros antiguos.
- Incluye tiempos de respuesta: añadir $request_time y $upstream_response_time a tu formato personalizado te dará visibilidad sobre el rendimiento real de tu aplicación.
- Protege la privacidad: los logs contienen IPs y datos personales. Establece una política de retención limitada (30-90 días, por ejemplo) y respeta el RGPD si operas desde Europa.
- Automatiza alertas: monitoriza picos de errores 5xx o IPs con tasas de petición anómalas. Reaccionar antes de que el problema afecte a tus usuarios marca toda la diferencia.
- No dependas solo de herramientas visuales: saber leer el fichero de log directamente con grep o awk te salvará en situaciones donde las herramientas gráficas no están disponibles. Y las hay, créeme.
Configurar y analizar los logs de acceso no exige conocimientos avanzados, pero marca la diferencia entre gestionar tu web a ciegas y tener control sobre lo que ocurre en tu servidor. Si prefieres centrarte en tu negocio y dejar estos detalles en manos de expertos, en RedServicio ofrecemos hosting con monitorización continua, logs optimizados y soporte 24/7. Empieza hoy mismo a mirar dentro de tus logs: tu web te lo agradecerá.
Equipo RedServicio
Artículos escritos y revisados por nuestro equipo técnico especializado en hosting e infraestructura web en España.
¿Listo para un hosting de verdad?
Servidores en España · Soporte 24/7 en español · Migración gratuita
Ver Planes desde 3,95€/mes →