Cómo alojar varios sitios web con un servidor Apache: CloudSavvy IT

Los hosts virtuales de Apache son una función que le permite alojar varios sitios web independientes desde una sola instalación de Apache. Cada sitio tiene su propio directorio de sistema de archivos y nombre de dominio. Puede ofrecer diferentes sitios a diferentes visitantes según el dominio que estén usando.

Los hosts virtuales se crean utilizando el <VirtualHost> directiva en los archivos de configuración de Apache. Por lo general, se almacenan en el archivo. sites-available directorio dentro de la ruta de instalación de Apache. En los sistemas Debian, esto suele ser /etc/apache2; otras distribuciones pueden usar /etc/httpd.

Asumiremos que ya tiene Apache en funcionamiento. Crearemos dos hosts virtuales separados, a.example.com es b.example.com. No hay límite para la cantidad de hosts virtuales que puede usar; si necesita una docena de sitios en un servidor, Apache lo hará.

→ Índice de contenidos

Configuración del sitio

Cada sitio necesita su propio directorio de sistema de archivos. Colocará archivos de sitios web, como HTML, CSS y JavaScript, dentro de este directorio. Se llama DocumentRoot de Apache, ya que es la raíz desde la que se sirven los documentos.

Puede ubicar sus sitios en cualquier lugar de su sistema. A menudo verá hosts virtuales almacenados en /var/www, con cada sitio obteniendo su propia carpeta:

sudo mkdir -p /var/www/a.example.com
sudo mkdir -p /var/www/b.example.com

/var/www normalmente es propiedad de root, entonces estamos usando sudo para crear los subdirectorios. A continuación, cambie la propiedad de las raíces del documento a su usuario y establezca los permisos adecuados. Esto permitirá que Apache lea los archivos mientras le otorga acceso de escritura para que pueda agregar su propio contenido.

sudo chown -R $USER:$USER /var/www/a.example.com
sudo chown -R $USER:$USER /var/www/b.example.com
sudo chmod -R 755 /var/www

Copie los archivos de su sitio web en directorios. Usaremos dos simples index.html Archivo:

a.example.com/index.html

<html>
    <body>
        <h1>a.example.com</h1>
    </body>
</html>

b.example.com/index.html

<html>
    <body>
        <h1>b.example.com</h1>
    </body>
</html>

Configuración de Apache

Ahora está listo para configurar sus hosts virtuales. Cree un nuevo archivo de host virtual para cada uno de los sitios. No importa cómo se llame el archivo; por convención, suele ser el nombre de host de su sitio.

Como mínimo, cada host virtual debe declarar dos propiedades:

  • ServerName - El nombre de host (dominio) desde el que se servirá el sitio.
  • DocumentRoot - La ubicación del sistema de archivos que se utilizará para este host virtual.

A continuación, se muestra un ejemplo de configuración para nuestros dos sitios:

/etc/apache2/sites-available/a.example.com.conf

<VirtualHost *:80>
    ServerName a.example.com
    DocumentRoot /var/www/a.example.com
</VirtualHost>

/etc/apache2/sites-available/b.example.com.conf

<VirtualHost *:80>
    ServerName b.example.com
    DocumentRoot /var/www/b.example.com
</VirtualHost>

¡Esta configuración básica es suficiente para que los dos sitios funcionen! La *:80 significa que Apache considerará el uso de este host virtual para cualquier solicitud que llegue al puerto 80. Más tarde serán eliminados por ServerName declaraciones.

Habilitar hosts virtuales

Agregar un host virtual a sites-available solo hazlo disponible pero no activo. Tienes que habilitar manualmente cada sitio que quieras usar. Las configuraciones de host virtual que se habilitarán deben estar vinculadas simbólicamente /etc/apache2/sites-enabled (o /etc/httpd/sites-enabled).

En los sistemas Debian, puede utilizar el a2ensite comando para simplificar este paso:

a2ensite a.example.com
a2ensite b.example.com

En otras distribuciones, use la extensión ln comando para crear manualmente un enlace simbólico.

sudo ln -s /etc/httpd/sites-available/a.example.com.conf /etc/httpd/sites-enabled/a.example.com.conf
sudo ln -s /etc/httpd/sites-available/a.example.com.conf /etc/httpd/sites-enabled/b.example.com.conf

Finalmente, reinicie Apache para aplicar la nueva configuración. Los cambios en el host virtual requieren que se reinicie el servidor después de agregarlos a sites-enabled.

sudo apache2ctl restart

Ahora debería poder ver a Apache sirviendo sus dos sitios diferentes. Si no tiene resolución DNS en su servidor, puede modificar su sistema /etc/hosts archivo para probar la configuración.

Agregue las siguientes líneas a /etc/hosts:

127.0.0.1 a.example.com
127.0.0.1 b.example.com

Esto obligará a ambos dominios a resolverse nuevamente en su sistema. Ahora podrá visitarlos en su navegador para ver las dos páginas de host virtual diferentes.

Alias ​​del sitio

Si quieres servir el mismo sitio en varios dominios, utilice el ServerAlias directiva en su host virtual. Cada alias se considerará cuando Apache compare su host virtual con las solicitudes entrantes. El host virtual se utilizará si la solicitud es Host el encabezado coincide ServerAlias o el ServerName.

<VirtualHost *:80>
    ServerName a.example.com
    ServerAlias example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/a.example.com
</VirtualHost>

Este ejemplo serviría a sitio en tres dominios, sin tener que repetir ningún detalle de configuración. usted deber usar ServerAlias para definir múltiples dominios - repitiendo ServerName es posible, pero sobrescribirá los usos anteriores.

Otras opciones de configuración

Muchas de las opciones de configuración del servidor de Apache se pueden utilizar con hosts virtuales. Anularán la configuración global del servidor cuando Apache maneje una solicitud utilizando el host virtual.

<VirtualHost *:80>
    ServerName a.example.com
    DocumentRoot /var/www/a.example.com
    DirectoryIndex my-index.html

    <Directory /var/www/a.example.com>
        AllowOverride All
        Options -Indexes
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Este host virtual aplica muchas otras configuraciones. my-index.html se sirve de forma predeterminada en lugar de index.htmly se utilizan rutas de registro personalizadas. Además, se aplican configuraciones adicionales a la raíz del documento en sí, utilizando el archivo Directory bloquear. .htaccess se permiten anulaciones (AllowOverride All) y las páginas de listado de directorios predeterminadas de Apache están deshabilitadas (Options -Indexes).

Host de dirección IP

Apache también admite hosts basados ​​en IP además de los hosts basados ​​en nombres que hemos visto hasta ahora. Los hosts basados ​​en IP son ideales cuando su servidor tiene múltiples interfaces de red, como una red corporativa interna e Internet pública. Es posible servir un sitio diferente dependiendo de la interfaz de red utilizada.

<VirtualHost 172.17.0.1>
    ServerName a.example.com
    DocumentRoot /var/www/a
</VirtualHost>

<VirtualHost 172.17.0.1>
    ServerName b.example.com
    DocumentRoot /var/www/b
</VirtualHost>

<VirtualHost 192.168.0.1>
    ServerName a.example.com
    DocumentRoot /var/www/a2
</VirtualHost

En este ejemplo, las solicitudes realizadas a a.example.com a través de la interfaz IP 192.168.0.1 recibiría contenido que no sea el enviado a través de 172.17.0.1. Además, los usuarios de esta última IP podrían iniciar sesión b.example.com. Este sitio no está expuesto a usuarios que se conectan a través de 192.168.0.1.

Este enfoque le permite utilizar un servidor para su intranet corporativa y sitio web público. Asociar sitios internos a la IP LAN de su servidor; ejecutar hosts públicos contra su dirección WAN.

Partido de anfitrión virtual

Rutina de resolución de host virtual Apache está bien documentado y bastante simple.

En general, Apache intenta hacer coincidir el archivo Host solicitud de encabezado contra un archivo ServerName o ServerAlias en una configuración de host virtual. Si hay varias coincidencias, Apache usará la extensión primero correspondiente al host virtual encontrado.

Los hosts virtuales se ordenan por nombre de archivo. Si usted necesitar un sitio que se comparará antes que otro, cambia el nombre de su archivo de configuración para que se clasifique antes que el sitio de destino. Puede agregar un prefijo numérico como 000-a.example.com.conf. La mayoría de las veces, esto no será necesario: si todos sus sitios tienen dominios únicos, nunca debería encontrar un conflicto.

Conclusión

Los hosts virtuales Apache le permiten dividir su configuración de sitios múltiples en archivos de definición independientes. Puede habilitar y deshabilitar cada sitio de forma independiente vinculándolo a sites-enabled.

Mucho opciones de configuración están disponibles para hosts virtuales. Puede anular algunas configuraciones del servidor Apache por host, por lo que tiene un control total sobre la configuración de cada sitio virtualizado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir Change privacy settings