VPSs y mas.

miércoles, 19 de mayo de 2010

Almacenar el referer en los logs de Apache

Problema:
Tengo un servidor Apache y deseo almacenar el HTTP Referer

Solución:
Apache por defecto guarda lo que se conoce como "common logs". Estos logs no almacenan la variable Referer que viene en el paquete http al momento de conectarse a tu servidor. La solución es tan sencilla como cambiar la palabra common por combined en la configuración del servidor Web.

Procedimiento:
Dentro del httpd.conf (o donde se guarda la configuración de tu dominio) cambiar:
CustomLog logs/mysite.log common
por
CustomLog logs/mysite.log combined

Lo anterior puede ser hecho por VirtualHost o dentro de todo el servidor Web.

Reiniciar el servicio de Apache y listo!

Suerte!.

lunes, 10 de mayo de 2010

Script en Bash para conseguir errores 404 dentro de un servidor Web

Escenario:
Tengo mi servidor Web Apache sobre Linux y quiero revisar los errores 404 (página no encontrada) o broken link de los usuarios que acceden a mi servidor.

Solución:
Ejecutar un script mediante el crontab cerca de la media noche que revise el archivo access_log del Apache con el contenido 404 y envie un correo a un destinatario.

Script:
#El objectivo de este script es revisar errores 404 dentro de los logs del WebServer
#para de esta manera evitar "broken links". Alejandro Acosta
#Notese que se ejecuta casi a la media noche para conseguir TODOS los errores 404 del dia
FECHA=`date +"%d/%b/%Y"`
cat /usr/local/apache/logs/access_log | grep $FECHA | grep " 404 " > /tmp/404.txt
#Entra en el if unicamente en caso de conseguir errores 404
if [ $? = "0" ]; then
echo $?
mail -s "Errores 404 encontrados" micorreo@miproveedor.com < /tmp/404.txt
fi
\rm /tmp/404.txt

Crontab:
57 23 * * * /root/scripts/check_logs.sh