Cómo administrar hosts virtuales dinámicos con Apache y el módulo mod_vhost_alias

- 3281
- 232
- Sra. Lorena Sedillo
El servidor web Apache tiene la capacidad de servir múltiples sitios web de la misma dirección IP, utilizando hosts virtuales. Cada host virtual se puede configurar en el archivo de configuración del servidor principal o, gracias a Incluir
o el Incluir a
directivas, en su propia dedicada. Cuando aumenta el número de hosts virtuales, su gestión comienza a ser problemática. Si su configuración es bastante similar, podemos administrarlos dinámicamente, gracias a la mod_vhost_alias
módulo. En este tutorial veremos cómo hacerlo.
En este tutorial aprenderás:
- ¿Qué es un host virtual Apache?
- Cómo verificar si el módulo mod_vhost_alias está habilitado
- Cómo cargar el módulo mod_vhost_alias en la familia de distribuciones de Debian y Red Hat
- Cómo administrar hosts virtuales dinámicos utilizando el módulo mod_vhost_alias

Requisitos y convenciones de software utilizados
Categoría | Requisitos, convenciones o versión de software utilizada |
---|---|
Sistema | Distribución independiente |
Software | Servidor web de Apache |
Otro | Permisos de raíz |
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$-Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado |
Una descripción general rápida del host virtual
Como ya mencionamos en la introducción, el servidor web Apache tiene la capacidad de servir múltiples sitios web utilizando hosts virtuales y la configuración DNS adecuada. La siguiente es una definición de host virtual mínima pero típica:
Servername www.prueba.Prueba LAN Serveralias.LAN DocumentRoot/var/www/www.prueba.lan
Esta configuración administrará las solicitudes de usuario para el www.prueba.lan
dirección, que es el valor que establecemos con el Nombre del servidor
directiva, pero también para prueba.lan
, Cuál es el Servidoralias
. Con el Raiz del documento
Directiva establecemos el directorio base del que se deben servir los archivos asociados al host virtual, que en este caso es /var/www/www.prueba.lan
.
Se puede definir un host virtual en el archivo de configuración del servidor principal (/etc/httpd/conf/httpd.confusión
en la familia de las distribuciones de Red Hat, /etc/apache2/apache2.confusión
sobre Sistemas Debian y sus derivados), o se puede escribir en su propio archivo e incluido desde la configuración principal. De hecho, si echamos un vistazo a la configuración de Apache en las distribuciones principales de Linux, podemos ver que los archivos de hosts virtuales se incluyen a través del Incluir a
Directiva de algún directorio específico.
En Fedora y distribuciones relacionadas, por ejemplo, encontramos la siguiente configuración al final del archivo:
# Cargar archivos de configuración en "/etc/httpd/conf.D "Directorio, si es que hay. Incluir conf conf.d/*.confusión
En Debian, en cambio:
# Incluya las configuraciones de host virtuales: incluido sitios de acción habilitada/*.confusión
Podemos notar que la ruta desde la que deben incluirse los archivos es relativo a la raíz del servidor. El Incluir a
La directiva se utiliza para incluir los archivos de host virtuales que deben nombrarse con el .confusión
sufijo. Aquí el Incluir
La directiva también podría usarse; Cuál es la diferencia entre los dos? Ambos funcionan exactamente de la misma manera, el Incluir a
Sin embargo, la directiva no causa un error cuando se usan comodines (como en este caso) y no se encuentra ninguna coincidencia, o si no existe una ruta, en general.
Para que esta configuración funcione, también se debe configurar una entrada DNS adecuada. Sin embargo, si trabajamos localmente, simplemente podríamos agregar una línea en el /etc/huéspedes
archivo. Por ejemplo:
127.0.0.1 www.prueba.lan
Cuando las configuraciones de hosts virtuales comienzan a aumentar, su administración podría ser fácilmente problemática. Una posible solución a este problema es usar hosts virtuales generados dinámicamente. Veamos cómo hacerlo con el mod_vhost_alias módulo.
Cargando el módulo mod_vhost_alias
Lo primero que tenemos que hacer es verificar si el mod_vhost_alias El módulo está habilitado. El comando que queremos ejecutar para este propósito depende de la distribución que estamos utilizando. En Fedora y otra distribución de la familia Red Hat, podemos usar lo siguiente:
$ httpd -m | grep -i vhost_alias
En Debian, en cambio:
$ apachectl -m | grep -i vhost_alias
Pasando el -METRO
opción para el httpd
(o apachectl
) comando, obtenemos una lista de módulos estáticos y compartidos cargados; Cubrir la salida a GREP podemos verificar si el módulo que necesitamos está en él. En caso de que el módulo no esté cargado, en Debian y sus derivados podemos ejecutar el siguiente comando:
$ sudo a2enmod vhost_alias && sudo systemctl reiniciar apache2
El a2enmod
El comando crea un enlace simbólico al /etc/apache2/mods-disponible/mod_vhost_alias.entonces
presentar al /etc/apache2/mods-habilitado
directorio (de manera similar a lo que el A2ensita
El comando hace para las configuraciones de hosts virtuales), que es donde se cargan los módulos desde.
En la familia Red Hat de distribución, la lista de módulos base cargados está en el /etc/httpd/conf.módulos.d/00-base.confusión
archivo. Cada módulo se carga con el Módulo de carga
directiva. Si por alguna razón el Vhost_alias
Se comenta la línea del módulo (67), simplemente elimine el comentario, guarde la modificación y vuelva a cargar el servicio HTTPD:
$ sudo systemctl reiniciar httpd
Una vez que el módulo está habilitado, podemos continuar con la configuración real.
Creación de hosts virtuales dinámicos
La configuración que estamos creando se basa en el hecho de que el mod_vhost_alias Módulo almacena los componentes separados por puntos del nombre de host virtual solicitado dentro de algunas variables que podemos hacer referencia e interpolar en la cadena que usamos para definir la raíz del documento de host virtual. Si tomamos el www.prueba.lan
Host virtual como ejemplo, tendremos:
- %0: todo el nombre de host virtual
- %1: "www"
- %2: "prueba"
- %3: "Lan"
Los números negativos también podrían usarse, por lo que, por ejemplo, tendremos:
- %-1 La última parte del nombre, en este caso "Lan"
- %-2 La penúltima parte, en este caso "prueba"
Incluso es posible especificar cada componente del nombre de host virtual desde un cierto puerto en adelante o hacia atrás. Por ejemplo, %2+
significa "desde la segunda parte en adelante" y %-2+
'Causa el penúltimo componente y todos los componentes que preceden a incluirlo.
Suponiendo que queremos usar el /var/www/
Directorio Como base de todos nuestros hosts virtuales, podríamos crear la siguiente configuración en un archivo, llamémoslo Dynamic_vhost.confusión
:
UseCanonicalName Off virtualDocumentRoot "/var/www/%-2"
Expliquemos la configuración anterior. En primer lugar, usamos el Nombre de useMánico
Directiva y establecerlo en "OFF": hicimos esto para asegurarnos de que el nombre del servidor se tome del encabezado "Host:" en la solicitud HTTP. Nosotros que usamos el VirtualDocumentRoot
directiva. Esta directiva es necesaria para establecer una ruta dinámica para la raíz del documento de un host virtual, mediante el uso de las variables que vimos anteriormente se evalúan al administrar una solicitud.
Cuando el www.prueba.lan
Se solicita host virtual, automáticamente los archivos que se servirán se buscarán dentro del /var/www/prueba
directorio. El uso del %-2
El índice negativo tiene la ventaja de que la configuración funcionará tanto con www.prueba.lan
y para prueba.lan
, ya que funciona al revés.
Obviamente esto es solo un ejemplo de lo que se puede lograr usando el mod_vhost_alias módulo, y puede crear la configuración que le convenga mejor.
Desventajas
Este tipo de configuración es bastante práctica si todo el host virtual que estamos administrando es bastante similar y requiere la misma configuración, pero tiene sus desventajas, lo que puede ser bastante relevante dependiendo de la situación. En primer lugar, no será posible especificar la configuración específica de VirtualHost, si no con el uso de .archivos htaccess); Este tipo de configuración también causará problemas si se usa junto con configuraciones de host virtuales estándar. Finalmente, las solicitudes de todos los hosts virtuales se registrarán en el mismo archivo.
Conclusiones
El servidor web Apache puede servir múltiples sitios web y recursos de una sola máquina gracias al uso de hosts virtuales. Cuando el número de hosts virtuales comienza a aumentar en número, puede ser difícil administrarlos si cada uno tiene su propio archivo/sección de configuración. Si tienen configuraciones similares, podemos solucionar este problema utilizando hosts virtuales generados dinámicamente, aprovechando el mod_vhost_alias módulo.
En este artículo vimos cómo verificar si este módulo está habilitado y cómo habilitarlo en las familias de distribuciones de Debian y Red Hat. También vimos cómo los componentes del nombre de host virtual se almacenan en variables y cómo usarlos para crear hosts virtuales dinámicos. Finalmente, vimos cuáles son las desventajas de usar esta configuración.
Tutoriales de Linux relacionados:
- Cómo migrar apache a nginx convirtiendo virtualhosts en ..
- Firefox en Linux: su conexión no es segura
- Comparación de Linux Apache Prefork vs Worker MPMS
- Cosas para instalar en Ubuntu 20.04
- Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
- Cómo instalar Ubuntu 20.04 en virtualbox
- Lista de las mejores herramientas de Kali Linux para pruebas de penetración y ..
- Apache IP y hosts virtuales basados en nombres explicados
- Una introducción a la automatización, herramientas y técnicas de Linux
- Mint 20: Mejor que Ubuntu y Microsoft Windows?
- « Cómo configurar NFS en Linux
- Cómo editar un archivo de sistema con sudoedit preservar el entorno de usuario invocador »