Red Hat Training

A Red Hat training course is available for RHEL 8

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 y example.net a la dirección IP del servidor web.

    Tenga en cuenta que debe añadir manualmente estas entradas a su servidor DNS.

Procedimiento

  1. Instale el paquete httpd:

    # yum install httpd
  2. Edite el archivo /etc/httpd/conf/httpd.conf:

    1. 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.

        Nota

        Apache 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 y ServerAlias. Esto también incluye las peticiones enviadas a la dirección IP del servidor.

  3. 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>
  4. Cree las raíces de los documentos para ambos hosts virtuales:

    # mkdir /var/www/example.com/
    # mkdir /var/www/example.net/
  5. Si establece rutas en los parámetros de DocumentRoot que no están dentro de /var/www/, establezca el contexto httpd_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 comando restorecon.

  6. Abra el puerto 80 en el firewall local:

    # firewall-cmd --permanent --add-port=80/tcp
    # firewall-cmd --reload
  7. Habilite e inicie el servicio httpd:

    # systemctl enable --now httpd

Pasos de verificación

  1. 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
  2. Utilice un navegador y conéctese a http://example.com. El servidor web muestra el archivo de ejemplo del host virtual example.com.
  3. Utilice un navegador y conéctese a http://example.net. El servidor web muestra el archivo de ejemplo del host virtual example.net.

Recursos adicionales