Apache IP y hosts virtuales basados ​​en nombres explicados

Apache IP y hosts virtuales basados ​​en nombres explicados

Con el uso de hosts virtuales podemos hacer un httpd servidor administrar múltiples sitios web. Podemos usar hosts virtuales basados ​​en IP y nombres; Cuáles son las diferencias entre ellos?

Cómo Apache decide qué de los hosts virtuales debería ser
Se utiliza para responder a una solicitud de cliente? Responderemos estas preguntas en esto
Artículo, sigue leyendo!

En este tutorial aprenderás:

  • ¿Cuáles son las diferencias entre IP y hosts virtuales basados ​​en nombres?
  • Cuál es el Escuchar directiva y cómo se usa
  • Cómo Apache decide qué host virtual debe usarse para responder a una solicitud
Apache IP y hosts virtuales basados ​​en nombres explicados

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Distribución independiente
Software No se necesita software específico
Otro Familiaridad con el servidor web Apache y los conceptos básicos HTTP
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

La directiva "escuchar"

Lo primero que debe tener en consideración es el Escuchar directiva. Esta directiva es obligatoria y es necesaria para decirle al httpd servidor a lo que Puerto combinación debería escuchar las solicitudes. Por defecto, el servidor generalmente está configurado para escuchar cada IP en el puerto 80.

En /etc/httpd/conf/httpd.confusión cual es el principal httpd Archivo de configuración en sistemas Fedora/Rhel/Centos, en la línea 45, Por ejemplo, podemos leer:

Escucha 80 

Como puede ver, solo se especifica el puerto con el Escuchar directiva. Como resultado, el servidor escuchará en ese puerto en todas las direcciones IP de la máquina. Si se especifica una dirección, en su lugar, el servidor solo escuchará en el proporcionado IP: puerto combinación.

El Escuchar La directiva se puede repetir varias veces, por lo tanto, es muy fácil de especificar múltiples combinaciones.

VirtualHost Matching



Una vez que el servidor está configurado para escuchar una dirección o puerto específico, Apache debe decidir qué virtualhost debe usarse para cumplir con la solicitud del cliente. Antes de ver los pasos involucrados en esta decisión, veamos brevemente cómo se define un anfitrión virtual.

La directiva utilizada para crear y configurar host virtual es Anfitrión virtual; Utiliza la siguiente sintaxis:

Como podemos observar, cada uno Anfitrión virtual La directiva necesita un addr; se puede especificar como:

  • Una dirección IP, ya sea IPv4 o IPv6 (las direcciones IPv6 deben estar encerradas en soportes cuadrados);
  • Un nombre de dominio totalmente calificado;
  • A * comodín (esto coincidirá con todas las direcciones)

Todos los parámetros y configuraciones realizadas dentro del Las etiquetas son "locales" de ese host virtual específico. Aquí hay un ejemplo de una configuración de host virtual:

 Servername: www.ejemplo.com documentroot "/var/www/ejemploone"  

O, usando un comodín:

 Servername: www.ejemplo.com documentroot "/var/www/ejemploone"  

Lo primero que hace el servidor es analizar, en orden, cada host virtual, y verificar si su addr coincide con la solicitud. Es importante notar que las direcciones IP definidas tienen prioridad sobre los comodines, que se consideran solo si no se encuentran coincidencias exactas. En este punto podemos tener tres casos:

  1. Solo un host virtual coincide con la solicitud;
  2. No hay hosts virtuales que coincidan con la solicitud;
  3. Múltiples host virtual coincide con la solicitud;

La primera resolución de casos es fácil: si la solicitud del cliente coincide solo con un host virtual específico, el httpd El servidor responde sirviendo el contenido relacionado con ese host virtual. En este caso hablamos Basado en IP hosts virtuales.

El segundo caso también se explica fácilmente: si ninguna configuración de host virtual satisface la solicitud del cliente, la configuración de servidor predeterminada se utiliza para responder a la solicitud. Para la configuración predeterminada, pretendemos que todo establezca fuera de .

En el tercer caso, múltiples hosts virtuales coinciden con la solicitud del cliente. Cuando esto sucede, el servidor debe discriminar dependiendo de otro factor que no sea el IP: puerto Combinación: el esquema y el nombre de host que usa el host virtual para identificarse.



Hosts virtuales basados ​​en nombres

El servidor examina cada host virtual coincidente en orden de definición y selecciona cuál debe usarse dependiendo de la solicitud solicitada nombre de host. Estos se llaman hosts virtuales "basados ​​en nombres". El primer host virtual que coincide con la solicitud se usa. Si no hay coincidencias, el servidor usa el primero definido Anfitrión virtual como retraso.

La principal ventaja de usar hosts virtuales basados ​​en nombres es que podemos ejecutar múltiples sitios web en la misma dirección IP. Veamos un ejemplo de un VirtualHost basado en nombre:

 Servername www.servidor.com documentroot/var/www/serverOne  

Desde *: 80 se utiliza como dirección, el host virtual coincidirá con cada solicitud realizada en el puerto 80. Lo que marca la diferencia en este caso es el Nombre del servidor directiva. Si se omite esta directiva, el servidor intentará obtener un nombre de dominio totalmente calificado (FQDN) basado en el nombre de host del sistema operativo.

El servidor verifica si el nombre de host especificado en la solicitud coincide con la configurada a través de la Nombre del servidor Directiva, en este caso www.servidor.comunicarse. Si lo hace, el contenido especificado con el Raiz del documento directiva se le sirve al cliente.

Dentro de una configuración de host virtual también es posible definir uno o más alias, para que coincidan con múltiples nombres de host. Esto se logra usando el Servidoralias directiva:

 Servername www.servidor.com serveralias *.servidor.com documentroot/var/www/serverOne  


En la configuración anterior agregamos un Servidoralias instrucción usando un comodín. La configuración ahora coincidirá también con todos los subdominios de servidor.comunicarse.

Hosts virtuales basados ​​en IP

Los hosts virtuales basados ​​en IP, como ya vimos, son básicamente lo que el httpd El servidor usa de forma predeterminada. Al usarlos, la capacidad de servir múltiples sitios web se basa en la solicitud del cliente IP: puerto combinación.

Se dice por sí mismo que, para usar este tipo de hosts virtuales, una máquina debe tener múltiples direcciones de red. Esto no significa que se requieran múltiples interfaces de red física, ya que se pueden asignar múltiples direcciones a la misma interfaz (esto se llama Alias ​​de IP), y también se pueden crear interfaces virtuales (quiero saber cómo crear una interfaz de red virtual en Linux?

Eche un vistazo a nuestro artículo sobre cómo crear interfaces de red virtuales en Linux. Aquí hay dos ejemplos de hosts virtuales basados ​​en IP:

Escuchar 8080 ServerName: www.ejemplo.com documentRoot "/var/www/ejemploe" Servername www www.Exampletwo.com documentRoot "/var/www/exampletwo"  

Arriba podemos ver que incluso si los dos hosts virtuales tienen la misma dirección IP, se especifica un puerto diferente en el segundo ejemplo: 8080. Para que el servidor pueda escuchar ese puerto, usamos el Escucha 8080 directiva.

Conclusión

En este tutorial vimos cómo funcionan los anfitriones virtuales de Apache. Aprendimos la diferencia entre IP y hosts virtuales basados ​​en nombres, y cómo el servidor determina qué configuración debe usarse para responder a una solicitud de cliente. Por favor, eche un vistazo a la instalación del artículo de Apache si desea saber más sobre cómo configurar un host virtual Apache.

Tutoriales de Linux relacionados:

  • Cómo migrar apache a nginx convirtiendo virtualhosts en ..
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Mastering Bash Script Loops
  • Cosas para instalar en Ubuntu 20.04
  • Cómo configurar un servidor OpenVPN en Ubuntu 20.04
  • Guía de solución de problemas GNU/Linux General para principiantes
  • Cómo crear una pila de lámparas basada en Docker usando Docker en ..
  • Crear redireccionamiento y reescribir reglas en .Htaccess en Apache ..
  • Cómo administrar hosts virtuales dinámicos con Apache y el ..
  • Cómo trabajar con la API REST de WooCommerce con Python