[TIP] Como verificar un vhost desde la shell con cURL.

Shared Hosting, Hosting compartido, ¿te suena el concepto?

Si no te suena pero tenés un blog o página web, entonces debería, por que lo más probable es que estés en un hosting compartido, donde una única instancia de webserver por número de IP aloja mas de un dominio.

Mas command Line Ninjitsu en Maldito Nerd y ya empieza a darme vergüenza usar siempre la misma imágen esta...

Mas command Line Ninjitsu en Maldito Nerd y ya empieza a darme vergüenza usar siempre la misma imágen esta…

Este blog, sin ir mas lejos, está en un hosting compartido. Este es el número de IP detrás del cual un Apache sirve los contenidos que estás leyendo ya mismo:

# host malditonerd.com
malditonerd.com has address 67.205.62.197

En este mismo servidor, además del hilachento, se alojan otros sitios, por ejemplo:

# host alsweddings.com
alsweddings.com has address 67.205.62.197

Internamente, el webserver Apache en mi caso-, denomina a  cada uno de estos sitios «vhosts».

¿Como sabe Apache que tu navegador está intentando entrar a malditonerd.com y no a alswedding.com cuando recibe la petición de servir una página?

 

Cuando tu browser quiere mostrarte el contenido de malditonerd.com, el sistema operativo le pregunta al servidor  de DNS:

– ¿Cual es el número de IP de malditonerd.com?

– Este: 67.205.62.197

El sistema operativo le avisa entonces al browser que se tiene que conectar al número de IP en cuestión y el browser establece la conexión agregando un HTTP Header especial: «host».

El HTTP header «host» que recibe el Apache detrás del IP 67.205.62.197 se usa entonces para que el servidor web sepa distinguir si tiene que mostrar este blog de mierda o la paginita de una wedding planner. ¿No es maravilloso?.

 

Si acabás de montar una página nueva o blog que todavía no tiene un nombre de dominio o anduviste haciendo cambios en tus vhosts por la causa que fuera, te vas a encontrar con la necesidad de verificar si funciona pero no vas a poder por que cuando tu sistema operativo le pregunte a tu servidor de DNS cual es el IP del dominio especificado, tu DNS te va a responder con un número de IP incorrecto si existiera de antemano o directamente te va a decir que no existe, que no rompas mas los huevos.

Llegado a este punto, tus opciones son dos:

  • Agregar el par nombre de dominio / número de IP a tu archivo hosts.
  • Probar con un browser que te permita modificar los HTTP headers.

 

cURL al rescate.

Si leiste hasta acá probablemente seas del tipo de persona de los que siempre tienen una shell corriendo, entonces, ¿qué más fácil que usar el comando curl para testear un vhost?

Con la opción «-H» podés indicarle a curl que agregue al request HTTP headers adicionales, así que para probar el vhost malditonerd.com en el IP 67.205.62.197 no tenés mas que hacer:

# curl -H "host: malditonerd.com" 67.205.62.197

Si tu vhost no anda, debería devolverte un 404, not found, con lo que podés agregarle una vueltita de tuerca al asunto, como acá, que lo hago fallar adrede pidiéndole al Apache detrás de otro número de IP de vaya uno a saber quién, que me muestre a malditonerd.com:

curl -H "host: malditonerd.com" 75.101.143.93 | grep 404

 

Obvio, tenés que tener cURL instalado de antemano, pero es coser y cantar y es un viaje de ida.

1 comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *