1.5. Configuración de hosts virtuales basados en nombres de Apache
Los hosts virtuales basados en nombres permiten a Apache servir diferentes contenidos para diferentes dominios que se resuelven a la dirección IP del servidor.
El procedimiento en esta sección describe la configuración de un host virtual para el dominio example.com
y example.net
con directorios raíz de documentos separados. Ambos hosts virtuales sirven contenido HTML estático.
Requisitos previos
Los clientes y el servidor web resuelven el dominio
example.com
yexample.net
a la dirección IP del servidor web.Tenga en cuenta que debe añadir manualmente estas entradas a su servidor DNS.
Procedimiento
Instale el paquete
httpd
:# yum install httpd
Edite el archivo
/etc/httpd/conf/httpd.conf
:Añada la siguiente configuración de host virtual para el dominio
example.com
:<VirtualHost *:80> DocumentRoot "/var/www/example.com/" ServerName example.com CustomLog /var/log/httpd/example.com_access.log combined ErrorLog /var/log/httpd/example.com_error.log </VirtualHost>
Estos ajustes configuran lo siguiente:
-
Todos los ajustes de la directiva
<VirtualHost *:80>
son específicos para este host virtual. -
DocumentRoot
establece la ruta del contenido web del host virtual. ServerName
establece los dominios para los que este host virtual sirve contenido.Para establecer varios dominios, añada el parámetro
ServerAlias
a la configuración y especifique los dominios adicionales separados con un espacio en este parámetro.-
CustomLog
establece la ruta del registro de acceso del host virtual. ErrorLog
establece la ruta del registro de errores del host virtual.NotaApache utiliza el primer host virtual encontrado en la configuración también para las peticiones que no coinciden con ningún dominio establecido en los parámetros
ServerName
yServerAlias
. Esto también incluye las peticiones enviadas a la dirección IP del servidor.
-
Todos los ajustes de la directiva
Añada una configuración de host virtual similar para el dominio
example.net
:<VirtualHost *:80> DocumentRoot "/var/www/example.net/" ServerName example.net CustomLog /var/log/httpd/example.net_access.log combined ErrorLog /var/log/httpd/example.net_error.log </VirtualHost>
Cree las raíces de los documentos para ambos hosts virtuales:
# mkdir /var/www/example.com/ # mkdir /var/www/example.net/
Si establece rutas en los parámetros de
DocumentRoot
que no están dentro de/var/www/
, establezca el contextohttpd_sys_content_t
en ambas raíces del documento:# semanage fcontext -a -t httpd_sys_content_t "/srv/example.com(/.*)?" # restorecon -Rv /srv/example.com/ # semanage fcontext -a -t httpd_sys_content_t "/srv/example.net(/.\*)?" # restorecon -Rv /srv/example.net/
Estos comandos establecen el contexto
httpd_sys_content_t
en el directorio/srv/example.com/
y/srv/example.net/
.Tenga en cuenta que debe instalar el paquete
policycoreutils-python-utils
para ejecutar el comandorestorecon
.Abra el puerto
80
en el firewall local:# firewall-cmd --permanent --add-port=80/tcp # firewall-cmd --reload
Habilite e inicie el servicio
httpd
:# systemctl enable --now httpd
Pasos de verificación
Cree un archivo de ejemplo diferente en la raíz de documentos de cada host virtual:
# echo "vHost example.com" > /var/www/example.com/index.html # echo "vHost example.net" > /var/www/example.net/index.html
-
Utilice un navegador y conéctese a
http://example.com
. El servidor web muestra el archivo de ejemplo del host virtualexample.com
. -
Utilice un navegador y conéctese a
http://example.net
. El servidor web muestra el archivo de ejemplo del host virtualexample.net
.
Recursos adicionales
-
Para más detalles sobre la configuración de los hosts virtuales de Apache, consulte la documentación de
Virtual Hosts
en el manual de Apache. Para más detalles sobre la instalación del manual, consulte Sección 1.8, “Instalación del manual del servidor HTTP Apache”.