17Aug

¿Los servidores web solo tienen un sitio web cada uno?

click fraud protection

Cuando comienzas a aprender cómo los nombres de dominio, las direcciones IP, los servidores web y los sitios web encajan y funcionan todos juntos, a veces puede ser un poco confuso o abrumador.¿Cómo está todo listo para funcionar tan suavemente? La publicación SuperUser Q & A de hoy tiene las respuestas a las preguntas de un lector curioso.

Pregunta de hoy &La sesión de respuesta nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web Q & A dirigida por la comunidad.

Foto cortesía de Rosmarie Voegtli( Flickr).

La pregunta

SuperUser reader user3407319 quiere saber si los servidores web solo tienen un sitio web cada uno:

Según lo que entiendo acerca de DNS y vinculando un nombre de dominio con la dirección IP del servidor web en el que está almacenado, ¿significa eso?servidor web solo puede contener un sitio web? Si los servidores web tienen más de un sitio web, ¿cómo se resuelve todo para que pueda acceder al sitio web que quiero sin ningún problema o confusión?

instagram viewer

¿Los servidores web solo tienen un sitio web cada uno o tienen más?

La respuesta

SuperUser contribuidor Bob tiene la respuesta para nosotros:

Básicamente, el navegador incluye el nombre de dominio en la solicitud HTTP para que el servidor web sepa qué dominio se solicitó y puede responder en consecuencia.

Solicitudes HTTP

A continuación, se muestra cómo se produce la solicitud HTTP típica:

1. El usuario proporciona una URL, con el formato http: // host: puerto / ruta.

2. El navegador extrae la parte del host( dominio) de la URL y la traduce en una dirección IP( si es necesario) en un proceso conocido como resolución de nombre. Esta traducción puede ocurrir a través de DNS, pero no tiene que ser así( por ejemplo, el archivo de hosts local en sistemas operativos comunes omite el DNS).

3. El navegador abre una conexión TCP al puerto especificado, o por defecto al puerto 80 en esa dirección IP.

4. El navegador envía una solicitud HTTP.Para HTTP / 1.1, se ve así:

El encabezado del host es estándar y se requiere en HTTP / 1.1.No se especificó en la especificación HTTP / 1.0, pero algunos servidores lo admiten de todos modos.

A partir de aquí, el servidor web tiene varias piezas de información que puede usar para decidir cuál debería ser la respuesta. Tenga en cuenta que es posible que un solo servidor web se vincule a múltiples direcciones IP.

  • La dirección IP solicitada, desde el socket TCP( la dirección IP del cliente también está disponible, pero esto se usa raramente, y algunas veces para bloquear / filtrar)
  • El puerto solicitado, desde el socket TCP
  • El nombre de host solicitado, comoespecificado en el encabezado de host por el navegador en la solicitud HTTP
  • La ruta solicitada
  • Cualquier otro encabezado( cookies, etc.)

Como parece haber notado, la configuración de alojamiento compartido más común en estos días coloca varios sitios web en una sola dirección IP: combinación de puertos, dejando solo el host para diferenciar entre sitios web.

Esto se conoce como un host virtual basado en nombre en Apache-land, mientras que Nginx los llama nombres de servidor en los bloques de servidor e IIS prefiere el servidor virtual.

¿Qué sucede con HTTPS?

HTTPS es un poco diferente. Todo es idéntico al establecimiento de la conexión TCP, pero después de eso debe establecerse un túnel cifrado TLS.El objetivo es no filtrar ninguna información sobre la solicitud.

Para verificar que el servidor web realmente posee este dominio, el servidor web debe enviar un certificado firmado por un tercero de confianza. El navegador comparará este certificado con el dominio que solicitó.

Esto presenta un problema.¿Cómo sabe el servidor web qué certificado de host / sitio web se debe enviar si es necesario antes de recibir la solicitud HTTP?

Tradicionalmente, esto se solucionó teniendo una dirección IP( o puerto) dedicada para cada sitio web que requiera HTTPS.Obviamente, esto se ha vuelto problemático ya que nos estamos quedando sin direcciones IPv4.

Ingrese SNI( Indicación del nombre del servidor).El navegador ahora pasa el nombre de host durante las negociaciones de TLS, por lo que el servidor web tiene esta información lo suficientemente temprano para enviar el certificado correcto. En el lado del servidor web, la configuración es muy similar a cómo se configuran los hosts virtuales HTTP.

La desventaja es que el nombre de host pasa ahora como texto sin formato antes de la encriptación, y se trata esencialmente de información filtrada. Esto generalmente se considera una compensación aceptable, aunque el nombre de host normalmente está expuesto en una consulta DNS de todos modos.

¿Qué sucede si solicita un sitio web solo por dirección IP?

Lo que hace el servidor web cuando no sabe qué host específico que ha solicitado depende de la implementación y configuración del servidor web. Normalmente, hay un sitio web "predeterminado", "catch-all" o "fall back" especificado que proporcionará respuestas a todas las solicitudes que no especifiquen explícitamente un host.

Este sitio web predeterminado puede ser su propio sitio web independiente( que a menudo muestra un mensaje de error), o podría ser cualquiera de los otros sitios web del servidor web, según las preferencias del administrador del servidor web.

¿Tiene algo que agregar a la explicación? Suena apagado en los comentarios.¿Desea leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Mira el hilo de discusión completo aquí.