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.
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.
cURL rules, gracias por el tip!