Configuración de Virtual Host en Apache HTTP 2.4
Sumario
Introducción
Hosting Virtual refírese a posibilidade de facer funcionar máis dun sitio web (por exemplo www.paxina1.com e www.paxina2.com) nunha sola máquina. Os sitios web virtuales poden estar:
- basados en enderezos IP: cada sitio web ten un enderezo IP diferente
- basados en nomes diferentes: cunha sola dirección IP están funcionando sitios web con diferentes nomes de dominio
Virtual host baseados en nome
Esta sería unha configuración posible, que é a que atopamos como sitio por defecto:
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80> #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Tarefa
Configurar dous virtual host as webs www.probadevh1.com e www.probadevh2.com
Solución
Cada sitio web terá nombres distintos, pero compartirán o mesmo enderezo IP e o mesmo porto (80).
Creación dos ficheiros de configuración
Crearemos os ficheiros de configuración para os dous virtual host partindo do ficheiro do sitio por defecto:
cd /etc/apache2/sites-available cp 000-default.conf probadevh1.conf cp 000-default.conf probadevh2.conf
Modificación dos ficheiros de configuración
Modificamos nos ficheros de configuración as seguintes directivas:
DocumentRoot ServerName ErrorLog CustomLog
O exemplo resultante de probadevh1.conf podería ser este:
<VirtualHost *:80> ServerName www.probadevh1.com ServerAdmin joselv@edu.xunta DocumentRoot /var/www/html/probadevh1 ErrorLog ${APACHE_LOG_DIR}/error_probadevh1.log CustomLog ${APACHE_LOG_DIR}/access_probadevh1.log combined </VirtualHost>
Activación da configuración
a2ensite probadevh1 a2ensite probadevh2
Creación dos DocumentRoot
mkdir /var/www/probadevh1 mkdir /var/www/probadevh2
Cambio de propietarios das rutas
Damos propietarios axeitados as rutas:
# chown -R www-data:www-data /var/www/probadevh1 # chown -R www-data:www-data /var/www/probadevh2
Creación index.html
sudo pico /var/www/probadevh1/index.html sudo pico /var/www/probadevh2/index.html
O contido podemos poñer calquera de proba, pero que sexa diferente para comprobar que accedemos correctamente a cada virtualhost.
Comprobamos o funcionamento
No navegador, accedemos a:
www.probadevh1.com www.probadevh2.com
Os contidos son os que corresponden a cada ficheiro index.html
Troubleshooting
Para o funcionamento dos virtual host é necesario que esté instalado e configurado un servidor DNS. Outra alternativa é configurar manualmente a resolución modificando o ficheiro:
/etc/hosts
Virtual host baseados en ip
Sería similar ó indicado para virtual host baseados en nome, pero o utilizar ips non será necesario preocuparnos pola resolución DNS.
Un posible exemplo:
<VirtualHost 172.10.20.30:80> ServerAdmin webmaster@www.example1.com DocumentRoot "/www/vhosts/example1" ServerName www.example1.com ErrorLog "/www/logs/example1/error_log" CustomLog "/www/logs/example1/access_log" combined </VirtualHost>
Para máis información:
Virtual host basados en ip e porto
Un exemplo sería:
Listen 80 Listen 8080 <VirtualHost 172.20.30.40:80> ServerName www.exemplo1.com DocumentRoot "/www/dominio-80" </VirtualHost> <VirtualHost 172.20.30.40:8080> ServerName www.examplo2.com DocumentRoot "/www/dominio-8080" </VirtualHost>
Referencias
- https://www.digitalocean.com/community/tutorials/how-to-configure-the-apache-web-server-on-an-ubuntu-or-debian-vps#exploring-the-default-virtual-host-file
- https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-18-04-quickstart-es
- https://httpd.apache.org/docs/2.4/vhosts/examples.html
- https://httpd.apache.org/docs/2.4/vhosts/name-based.html