¿Cómo se pasa un subdominio al servidor web?

12

Sé que dns resuelve una dirección como example.com a una dirección IP como 11.22.33.44, pero estoy un poco confundido acerca de cómo se resuelven los subdominios, de modo que cuando escribe http://subdomain.example.com , lo que realmente se pasa al servidor a las 11.22.33.44? En otras palabras, example.com = 11.22.33.44, pero subdominio.example.com/path = ???

¿El "subdominio" y la "ruta" se pasan como encabezados http, o se asignan en la URL de alguna manera, o qué?

Gracias por adelantado.

Editar: si lo entiendo correctamente, BloodPhilia dice que el subdominio.ejemplo.com en realidad es un dominio diferente que, en principio, podría resolverse en una IP totalmente diferente. Pero si es así, entonces, ¿qué pasa con los hosts que tienen una gran cantidad de subdominios (que parecen), pero que en realidad se asignan a alguna ruta en el sitio? Por ejemplo, blogspot aloja millones de blogs, y todos se ven así:

aaa.blogspot.com
bbb.blogspot.com
...millions more...
yyy.blogspot.com
zzz.blogspot.com

Esos claramente no son subdominios con sus propias IP, sino más bien un mapeo como aaa.blogspot.com -> www.blogspot.com/aaa, pero ¿cómo se logra esto? ¿Qué se pasa realmente al servidor web en blogspot.com?

Joshua Frank
fuente

Respuestas:

18

Los dominios, subdominios, subdominios y sub (x) subsubdominios (¡los dos últimos!), Son tratados de la misma manera por DNS para un usuario final y un servidor web.

Por ejemplo, el servidor DNS puede devolver resultados diferentes para domain.com, www.domain.como mysite.domain.com.

Ahora, como probablemente sepa, hay muchos más dominios que IP en el mundo.

Debido a esto, los servidores usan algo conocido como "Encabezados de host" para servir el contenido correcto.

No importa lo que solicite realmente, su máquina trata todo de la misma manera: buscará en DNS a qué IP debe conectarse, y una vez conectado, enviará el encabezado del host como parte de la solicitud. El servidor web luego envía el contenido para el que fue configurado.

Una buena herramienta para probar / aprender / diagnosticar es Wfetch, se puede descargar aquí .

Aquí hay un ejemplo de los encabezados enviados al acceder a superuser.com

texto alternativo

Aquí está la configuración para los encabezados de host en IIS (un servidor web):

texto alternativo

(Imagen de aquí )

Si estaba interesado, Serverfault.com y Superuser.com están en la misma IP y esta es la técnica que se utiliza para separar los sitios y servir contenido diferente.

Para leer más sobre el tema, es posible que desee leer el artículo de Wikipedia sobre alojamiento virtual .

(Sé que entiendes los conceptos básicos, ¡pero pensé que sería bueno decir un poco más para que cualquiera que esté en Google pueda aprender un poco si así lo desea!)

Editar

Entonces, según su ejemplo, supongo que alguien tan grande como blogspot probablemente tenga una entrada DNS comodín (una entrada comodín devuelve el mismo resultado para cualquier consulta) que apunta a un equilibrador de carga, el equilibrador de carga lo enviará a muchos servidores web diferentes que probablemente no tienen un sitio separado por encabezado de host, sino un solo sitio / script en el que se analiza la dirección escrita (encabezados de host o no) y extrae el contenido correcto de su CDN allí y luego.

Aunque, también sería posible (pero poco probable) que simplemente tengan unos pocos miles de entradas por ip, la ip conduce a unos pocos servidores y simplemente tienen una entrada para cada sitio que tiene un encabezado de host correspondiente.

William Hilsum
fuente
1
¡Agradable! Nota al margen: el hecho de que dos sitios web compartan una dirección IP no significa necesariamente que siempre estén alojados en la misma máquina. De hecho, un equilibrador de carga también puede echar un vistazo a estos encabezados y delegar en diferentes máquinas. (Para Super User et al, consulte también el Centro de datos de Nueva York de Stack Overflow , que realmente no leí yo mismo ...)
Arjan
@Arjan +1 buen punto ... Mencioné equilibradores de carga, pero obviamente podría ser solo la (s) IP (s) de un equilibrador de carga, y luego dividieron las solicitudes en muchos servidores.
William Hilsum
1
Marcado como respuesta para la información detallada y enlaces a más investigaciones. ¡Gracias!
Joshua Frank el
6

De hecho, si dos dominios tienen la misma dirección IP, el servidor depende del navegador para especificar el dominio solicitado. Como :

GET / HTTP/1.1
Host: data.stackexchange.com
Arjan
fuente
3

Subdominios no es la palabra correcta. Por lo general, un subdominio es dominio por sí solo, por lo que sub.example.com se pasa primero al DNS, si no se encuentra un registro específico para este subdominio, la solicitud se pasa a la IP del dominio superior. (example.com) En ese servidor, la solicitud se realiza nuevamente y el servidor actuará en consecuencia.

En otras palabras, una solicitud a example.com realmente no difiere de una solicitud a sub.example.com.

BloodPhilia
fuente
Creo que tal vez no entiendo algo importante aquí. Déjame editar y aclarar mi pregunta. Gracias.
Joshua Frank el
¿Está diciendo que si sub.example.comno se resuelve, se example.comusaría la dirección IP de ? Creo que los navegadores no hacen eso. (A menos que haya algún registro DNS comodín, pero el subdominio se resolvería, diría yo).
Arjan
1

Subdomain.example.com no se resuelve en 11.22.33.44; para el propósito de su pregunta, generalmente tiene su propio registro DNS A y se resuelve en una dirección diferente.

Es posible permitir que el subdominio se resuelva en la misma dirección que el dominio principal y que aún sirva en diferentes páginas, pero si lo hace, debe alojar ambos sitios en el mismo servidor web y debe tenerlo en cuenta en la configuración de su servidor. La forma en que tiene esto en cuenta depende del tipo de servidor web que esté ejecutando.

Joel Coehoorn
fuente
1
¿Está diciendo que, en mi ejemplo de blogspot, "xyz.blogspot.com" no tendrá una entrada de DNS dedicada, por lo que dns buscará "blogspot.com" y la encontrará en 11.22.33.44. ¿Pero enviará la url completa "xyz.blogspot.com" como el campo host, y depende del servidor analizar esto y enviar la página xyz al navegador?
Joshua Frank el
Si, eso es correcto.
Joel Coehoorn el
nslookup dummy.example.comrendimientos server can't find dummy.example.com: ¿cómo coincide eso con lo anterior entonces? (En cuanto al ejemplo en el comentario de @ Joshua?)
Arjan
lo siento, aún necesita un registro A para su subdominio, es solo que puede proporcionar la misma IP si lo desea.
Joel Coehoorn
Entonces estoy confundido de nuevo. Si hay millones de subdominios xyz.blogspot.com, no todos pueden tener registros A, entonces, ¿cómo se realiza el enrutamiento? Y la configuración de registro A es del lado del servidor. Estoy interesado en cómo sabría el cliente, dada una url, si xyz es un subdominio adecuado o algo que está asignado al lado del servidor. En particular, ¿alguna vez es seguro almacenar en caché una IP por un tiempo, porque sabes que x.domain.com e y.domain.com están en el mismo servidor, o nunca puedes saberlo solo mirando la URL?
Joshua Frank