Apache: Crear un VirtualHost

De nuxpy
Ir a la navegación Ir a la búsqueda

En la actualidad la mayoría de los sistemas de aplicación han migrado sus funcionalidades a la nube, esto sugiere realizar un gran número de índices y referencias hacia muchos sitios web, cada uno con sus características especiales.

Cada sitio o aplicación web está asociada a un dominio específico y este a su vez, a un directorio interno en el servidor donde se desprende un pequeño árbol que permite mostrar la información a través de ciertos mecanismos de codificación y decodificación propia de cada lenguaje de programación que finalmente se traduce como HTTP.

Uno de los servidores web más populares y usados en el mercado es Apache, en un mismo servidor con Apache se pueden publicar muchos sitios web, el servicio debe traducir cuál es la petición solicitada para así resolver y mostrar el sitio respectivo al usuario.

Para esto se generan VirtualHost, uno por cada sitio y cada cual con su respectiva configuración.

Archivo de configuración

Todo VirtualHost se declara en un archivo de configuración, por lo general tendría un nombre como: misitioweb.conf

Se puede hacer referencia literal del dominio del sitio en cuestión pero la extensión final es .conf.

En el directorio de sitios disponibles se agregan todos los archivos de configuración de cada sitio o aplicación web. La ruta absoluta absoluta sería:

Debian:

/etc/apache2/sites-available/misitioweb.conf

Contenido

La sintaxis del archivo de configuración es propia de Apache, en el archivo se hace el llamado de los módulos y directrices que incidirán sobre el sitio web y su seguridad.

Ejemplo de contenido de un archivo de configuración:

<VirtualHost *:80>
    ServerName misitioweb.com
    ServerAlias www.misitioweb.com
    ServerAlias misitioweb.es
    ServerAdmin webmaster@nuxpy.com
    DocumentRoot /var/www/html/misitioweb
    ErrorLog ${APACHE_LOG_DIR}/error_misitioweb.log
    CustomLog ${APACHE_LOG_DIR}/access_misitioweb.log combined
</VirtualHost>

En la línea 6 se declara la ruta absoluta donde está ubicado todo el árbol del sitio web, aunque este pueda llevar hacia otras rutas, allí se hace referencia a la raíz de la aplicación web.

Si se desea agregar más directrices o parámetros de configuración para el sitio en cuestión, se pueden revisar en el sitio oficial de Apache.

Contenido con HTTPS / SSL

Se puede agregar un bloque para hacer la redirección de navegación HTTP a través de puerto 80 hacia navegación HTTPS puerto 443 de la siguiente manera:

<VirtualHost *:80>
    ServerName nuxpy.com
    ServerAlias www.nuxpy.com
    ServerAdmin furbina@nuxpy.com
    DocumentRoot /var/www/html/nuxpy.com
    ErrorLog ${APACHE_LOG_DIR}/nuxpy.com_error.log
    CustomLog ${APACHE_LOG_DIR}/nuxpy.com_access.log combined
</VirtualHost>
<VirtualHost *:443>
    ServerName nuxpy.com
    ServerAlias www.nuxpy.com
    ServerAdmin webmaster@nuxpy.com
    DocumentRoot /var/www/html/nuxpy.com
    ErrorLog ${APACHE_LOG_DIR}/nuxpy.com_error.log
    CustomLog ${APACHE_LOG_DIR}/nuxpy.com_access.log combined
</VirtualHost>

Finalmente se asociaría un certificado digital correspondiente, o vincular una estructura tal como se genera con el certbot de Let's Encrypt.

Activar un VirtualHost

Una vez que se genera un VirtualHost para un sitio definido, este se debe activar. En algunos sistemas Linux el servidor Apache contiene un pool de comandos para la gestión de sitios y módulos.

Para la activación sería algo parecido a lo siguiente:

a2ensite misitioweb.conf

Este comando genera un enlace simbólico que habilita el sitio web y se muestra en la ruta absoluta:

Debian:

/etc/apache2/sites-enabled/misitioweb.conf

Posteriormente se recarga el servicio de Apache, mediante systemd:

systemctl reload apache2.service

De manera tradicional:

/etc/init.d/apache2 reload

Desactivar un VirtualHost

Para desactivar un VirtualHost con los comandos de Apache:

a2dissite misitioweb.conf

Luego se recarga el servicio, con systemd:

systemctl reload apache2.service

De manera tradicional:

/etc/init.d/apache2 reload

Temas relacionados