GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar la configuración de host virtual de Apache (con ejemplos)

Con Apache Virtual Host, puede ejecutar varios sitios web en el mismo servidor.

Por ejemplo, puedo ejecutar tanto thegeekstuff.com como top5freeware.com en un solo servidor físico que tiene un servidor web Apache ejecutándose.

Fig:Apache Virtual Host (Múltiples sitios web, un Apache)


Hay dos tipos de configuraciones de host virtual de Apache:1) Host virtual basado en IP y 2) Host virtual basado en nombre. Se recomienda un host virtual basado en nombres para la mayoría de los escenarios.

Host virtual basado en IP

En esta configuración, cuando apunta dos sitios web (con direcciones IP diferentes) al servidor que ejecuta Apache, ese servidor físico debe tener dos direcciones IP diferentes configuradas.

Esto significa que el servidor debe tener dos tarjetas ethernet, cada una de ellas configurada con la dirección IP del sitio web correspondiente que servirá el host virtual de Apache. Por lo tanto, esto no es práctico para la mayoría de los aspectos, y no debería usarlo.

En el siguiente ejemplo, el servidor contiene dos tarjetas NIC, una está configurada con la dirección IP 192.168.101.1 para thegeekstuff.com, otra está configurada con 192.168.102.1 para top5freeware.com. Ambas direcciones IP son atendidas por un único servidor web Apache que se ejecuta en ese servidor utilizando un host virtual basado en IP.

Fig:Host virtual basado en IP de Apache

Host virtual basado en nombre

En esta configuración, cuando el servidor web Apache recibe una solicitud, busca el nombre de host en el encabezado HTTP y, según el nombre de host, sirve diferentes sitios web. Esto es muy fácil, ya que solo necesita una dirección IP en ese servidor físico; pero actualiza el DNS con varios nombres de sitios web que apuntan a la misma dirección IP. A efectos prácticos, solo utilizará la configuración de host virtual basada en nombres.

En el siguiente ejemplo, el servidor contiene solo una tarjeta NIC, que está configurada con la dirección IP 192.168.101.1. La entrada DNS para el sitio web thegeekstuff.com y top5freeware.com apunta a la dirección IP 192.168.101.1. Cuando Apache recibe una solicitud, busca la entrada del nombre de host en el encabezado HTTP y sirve el sitio web correspondiente.

Fig:Host virtual basado en el nombre de Apache

1. Descomente httpd-vhosts.conf en httpd.conf

Si instaló Apache 2 desde la fuente, de forma predeterminada, la siguiente línea se comentará en el archivo httpd.conf. Descomente esta línea.

# vi /usr/local/apache2/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf

2. Configurar hosts virtuales

Modifique httpd-vhosts.conf como se muestra a continuación para configurar la configuración de host virtual basada en nombre para dos hosts.

  • NameVirtualHost *:80:indica que todos los hosts virtuales basados ​​en nombres escucharán en el puerto predeterminado 80
  • :incluya todos los parámetros de configuración de Apache para todos y cada uno de los hosts virtuales entre estas etiquetas de VirtualHost. Cualquier directiva de apache se puede usar dentro del contenedor virtualhost.
  • En el siguiente ejemplo, estamos configurando un host virtual para thegeekstuff.com y top5freeware.com escuchando en el mismo puerto 80. Por lo tanto, habrá dos , uno para cada sitio web .
  • Cuando vaya a thegeekstuff.com, los archivos bajo /usr/local/apache2/docs/thegeekstuff serán servidos por Apache; y access_log y error_log para este sitio estarán en /usr/local/apache2/logs/thegeekstuff
# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache2/docs/thegeekstuff"
    ServerName thegeekstuff.com
    ServerAlias www.thegeekstuff.com
    ErrorLog "logs/thegeekstuff/error_log"
    CustomLog "logs/thegeekstuff/access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache2/docs/top5freeware"
    ServerName top5freeware.com
    ServerAlias www.top5freeware.com
    ErrorLog "logs/top5freeware/error_log"
    CustomLog "logs/top5freeware/access_log" common
</VirtualHost>

3. Comprobar la sintaxis de configuración de VirtualHost

Verifique la sintaxis de configuración virtual usando "httpd -S" como se muestra a continuación. Cuando todo está configurado correctamente, simplemente muestra "Syntax OK".

# /usr/local/apache2/bin/httpd -S
VirtualHost configuration:
Syntax OK

Cuando algo no está configurado correctamente, mostrará un mensaje de advertencia, incluido el mensaje "directorio no sale", como se muestra a continuación.

# /usr/local/apache2/bin/httpd -S
Warning: DocumentRoot [/usr/local/apache2/docs/top5freeware] does not exist
Warning: ErrorLog [/usr/local/apache2/logs/thegeekstuff] does not exist
Syntax OK

4. Reinicie Apache y pruebe

# /usr/local/apache2/bin/apachectl restart

Ahora, cuando vaya a thegeekstuff.com (o www.thegeekstuff.com), apache entregará los archivos del directorio /usr/local/apache2/docs/thegeekstuff.

Cuando vaya a top5freeware.com (o www.top5freeware.com), el mismo apache que se ejecuta en el mismo servidor servirá los archivos del directorio /usr/local/apache2/docs/top5freeware.

Solo para reiterar, para que el host virtual basado en nombre funcione correctamente, la entrada de DNS para ambos sitios web debe apuntar a la misma dirección IP externa del servidor físico donde se ejecuta el servidor web Apache.


Linux
  1. Cómo configurar SSL/TLS con Apache httpd en Red Hat

  2. Cómo crear servidores virtuales Apache en CentOS 7

  3. Configurar un host virtual basado en nombre en Apache

  4. Cómo configurar el sistema de archivos ZFS en Linux con ejemplos de comandos zpool

  5. Cómo configurar el host virtual apache en ubuntu

Cómo configurar un host virtual Nginx

Cómo configurar el host virtual Apache en CentOS 8

Cómo configurar el host virtual Apache en Ubuntu 20.04 LTS

Cómo instalar Apache con host virtual en CentOS 8

Cómo configurar servidores virtuales Apache en Ubuntu 20.04

Cómo configurar la autenticación de contraseña con Apache en Ubuntu 18.04