Aparte del servidor web Apache, existen otros servidores Web no menos conocidos en el mercado actual. Esta vez os presento la configuración de Virtual Hosts sobre el servidor Web gratuito y libre lighttpd. Al igual que en el tutorial de Apache, os enseñaré como compartir los recursos de una misma máquina para servir contenido a varios dominios con un único servidor Web. El tutorial solo pretende enseñar los primeros pasos para que luego vosotros lo adaptéis a vuestras necesidades.
⬇️ Compra en Amazon el hardware que utilizo ⬇️
- 💻 Ordenador Portátil: Descúbrelo aquí
- 🖥️🖥️ Monitores: Mis 2 súper monitores
- ⌨️ Teclado: Mini teclado + Lector DNIe
- 🖱️ Ratón: Mi ratón programable
- 🎧 Auriculares: Súper Auriculares TOP!
- 🖨️ Impresora: Mi fantástica impresora
- 🗄️ NAS Backup: Mi NAS para Backups
- 🔌 HUB USB: Mi HUB para puertos USB
- 📱 Smartphone: Mi Smartphone
- 📲 Tablet: Mi tablet para viajes
- ⌚ Smartwatch: Mi Smartwatch favorito
- 📹 Cámara deportiva: Mi cámara para deportes
- 1.- ELEMENTOS UTILIZADOS EN ESTE TUTORIAL
- 2.- INSTALACIÓN DEL SERVIDOR WEB LIGHTTPD
- 3.- ESTRUCTURA Y PERMISOS DE DIRECTORIOS
- 4.- CAMBIOS EN EL FICHERO PRINCIPAL DE CONFIGURACIÓN
- 5.- CONFIGURACIÓN DE LOS VIRTUALHOSTS
- 6.- COMPROBACIÓN DE LOS VIRTUALHOSTS SIN SERVIDOR DNS
- 7.- COMPROBACIÓN DE LOS VIRTUALHOSTS CON UN SERVIDOR DNS
lighttpd (pronunciado lighty) es un servidor web diseñado para ser rápido, seguro, flexible, y fiel a los estándares.
Está optimizado para entornos donde la velocidad es muy importante, y por eso consume menos CPU y memoria RAM que otros servidores. Por todo lo que ofrece, lighttpd es apropiado para cualquier servidor que tenga problemas de carga.
lighttpd es software libre y se distribuye bajo la licencia BSD. Funciona en GNU/Linux y UNIX de forma oficial. Para Microsoft Windows actualmente hay una distribución conocida como Lighttpd For Windows mantenida por Kevin Worthington.
Características:
- Virtual hosting (alojar varios dominios en la misma IP)
- CGI, SCGI y FastCGI
- Soporte para PHP, Ruby, Python y otros
- Entorno chroot
- Cifrado SSL
- Compresión (gzip, bzip2, ...)
- Autenticación (LDAP, htpasswd, otros)
- Server Side Includes
- Consumo de memoria constante
- Redirecciones HTTP, y reescrituras de URL
- Puede enviar partes de un fichero (rangos)
- Puede usar select() o poll()
- También permite otros sistema de notificación de eventos como kqueue y epoll
- Hace estadísticas mediante RRDtool
- Muestra un listado de ficheros cuando se entra a un directorio sin index.html
- Redirección condicional
- Permite módulos externos
- Cache Meta Language
- Acepta parte de WebDAV
Espero que os guste!
¿Qué es un Virtual Host?
Imaginemos uno de los miles de proveedores de Hosting que hay en el mundo. Cada hosting tiene N clientes y esos clientes quieren tener su Web alojada en los servidores del proveedor. Los Virtual Hosts posibilitan a los servidores Web de gestionar N páginas Webs con dominios diferentes pero con una única IP. Por ejemplo, si configuramos un servidor Lighttpd con 2 Virtual Hosts www.ejemplo1.com y www.ejemplo2.com, podemos alojar dichas páginas en un único servidor con la IP 80.33.120.201.
Y te preguntarás, ¿cuando pido una de esas 2 páginas, como sabe el servidor a que página quiero acceder si la IP resuelta por el DNS es la misma? Bien, la solución son los Virtual Host. ¡Lo has adivinado! En los paquetes TCP que se envían al servidor Web, se especifica el destino al que queremos acceder y es el servidor Web quien analiza esas peticiones y nos autoriza para acceder al contenido de www.ejemplo1.com ó de www.ejemplo2.com.
Cada dominio que configuremos, tendrá asociado un directorio diferente en el cual irá almacenado su contenido. Podemos crear tantos Virtual Hosts como queramos, siempre en función de la carga que soporte el Servidor Web y de la configuración Lighttpd que hagamos. Se podría decir que "no hay limites".
1.- ELEMENTOS UTILIZADOS EN ESTE TUTORIAL
- [Servidor Web] - GNU/Linux Ubuntu Server 16.04
- [Cliente Web] - Windows 7
2.- INSTALACIÓN DEL SERVIDOR WEB LIGHTTPD
Lo primero, como es habitual en todos los tutoriales, es instalar el paquete base, en nuestro caso será lighttpd.
Instalaremos el paquete con usuario root ó con un usuario con permisos de sudo y actualizaremos previamente nuestros repositorios:
# apt-get update
# apt-get install lighttpd
3.- ESTRUCTURA Y PERMISOS DE DIRECTORIOS
Guardaremos los ficheros de los 2 dominios bajo el directorio principal /var/www/html/ donde crearemos los 2 directorios para los 2 dominios. Realmente podemos almacenar los ficheros donde queramos, pero lo más habitual es hacerlo en /var/www/. Crearemos 2 directorios con el nombre de nuestros dominios (puede ser cualquier nombre). Yo he optado por www.tumadrefumapuros.com y www.siemprecierraslosbares.com, hay que ser original :D
Crearemos 2 directorios, uno para cada uno de los dominios de ejemplo:
# mkdir -p /var/www/html/www.tumadrefumapuros.com
# mkdir -p /var/www/html/www.siemprecierraslosbares.com
Debemos asegurarnos que los directorios tienen como propietario www-data y grupo www-data. Por ejemplo en Red Hat estos usuarios son Apache y Apache, cuidado en este paso:
# chown -R www-data.www-data /var/www/html/www.tumadrefumapuros.com
# chown -R www-data.www-data /var/www/html/www.siemprecierraslosbares.com
Para asegurarnos que nadie, excepto el propietario www-data pueda escribir en el (los) directorios, cambiaremos los permisos de ambos directorios:
# chmod -R 0755 /var/www/html/www.tumadrefumapuros.com
# chmod -R 0755 /var/www/html/www.siemprecierraslosbares.com
Dentro de cada uno de los directorios (public_html), podemos crear una página Web diferente para visitarla a posteriori. Una forma muy sencilla de hacerlo es de la siguiente forma:
# echo "Bienvenidos a www.tumadrefumapuros.com" > /var/www/html/www.tumadrefumapuros.com/index.html
# echo "Bienvenidos a www.siemprecierraslosbares.com" > /var/www/html/www.siemprecierraslosbares.com/index.html
Como puede verse, las direcciones para entrar a los 2 sites son bastante "feas": http://192.168.145.212/www.tumadrefumapuros.com/ y http://192.168.145.212/www.cierrassiemprelosbares.com/:
Visualizando las 2 páginas sin virtualhost
4.- CAMBIOS EN EL FICHERO PRINCIPAL DE CONFIGURACIÓN
El fichero principal de configuración de lighttpd es /etc/lighttpd/lighttpd.conf. En él, podemos especificar todos los Virtual Hosts que necesitemos. Podemos añadir todos los Virtual Hosts a este fichero de configuración ó podemos hacerlo en ficheros separados. Mi recomendación es utilizar un fichero de configuración diferente para cada uno de los Virtual Hosts. Con esto conseguimos que no se toque código que no debemos en el fichero principal de configuración. Los ficheros Virtual Hosts se ubicarán en un directorio llamado /etc/lighttpd/vhosts.d/ (podemos usar otro directorio diferente) y debemos añadir la siguiente línea al final del fichero /etc/lighttpd/lighttpd.conf:
include_shell "cat /etc/lighhtpd/vhosts.d/*.conf"
Con esto conseguiremos que al final del fichero se incluya el contenido de todos los ficheros de Virtual Hosts que guardemos en /etc/lighttpd/vhosts.d/
5.- CONFIGURACIÓN DE LOS VIRTUALHOSTS
Los archivos Virtual Host contienen la información necesaria para que funcione correctamente y le indican al servidor Web Lighttpd como deben responder a las peticiones realizadas a dicho(s) dominio(s).
Crearemos el fichero /etc/lighttpd/vhosts.d/www.tumadrefumapuros.com.conf con el siguiente contenido:
$HTTP["host"] =~ "(^|\.)tumadrefumapuros\.com$" {
server.document-root = "/var/www/html/www.tumadrefumapuros.com"
server.errorlog = "/var/log/lighttpd/www.tumadrefumapuros.com-error.log"
accesslog.filename = "/var/log/lighttpd/www.tumadredumapuros.com-access.log"
}
Y el otro dominio lo guardaremos en el fichero /etc/lighttpd/vhosts.d/www.siemprecierraslosbares.com.conf y tendrá el siguiente contenido:
$HTTP["host"] =~ "(^|\.)siemprecierraslosbares\.com$" {
server.document-root = "/var/www/html/www.siemprecierraslosbares.com"
server.errorlog = "/var/www/html/www.siemprecierraslosbares.com-error.log"
accesslog.filename = "/var/log/lighttpd/www.siemprecierraslosbares.com-access.log"
}
Para comprobar si la sintaxis está correcta, ejecutaremos:
# lighttpd -t -f /etc/lighttpd/lighttpd.conf
Reiniciaremos lighttpd para que se apliquen los cambios:
# /etc/init.d/lighttpd restart
6.- COMPROBACIÓN DE LOS VIRTUALHOSTS SIN SERVIDOR DNS
Para probar si nuestro servidor está reconociendo los 2 VirtualHost nuevos y no tenemos un servidor de DNS que nos resuelva dichos dominios, podemos crear 2 nuevas entradas fijas de forma manual en el fichero "hosts" de nuestro equipo. Para el caso de los Windows el fichero es c:\Windows\System32\Drivers\etc\lmhosts y en los GNU/Linux /etc/hosts.
Deberemos añadir las lineas siguientes:
192.168.145.212 tumadrefumapuros.com
192.168.145.212 www.tumadrefumapuros.com
192.168.145.212 siemprecierraslosbares.com
192.168.145.212 www.siemprecierraslosbares.com
La dirección IP de mi servidor Web es 192.168.145.212 (cambia esa IP por la de tu servidor Web)
Virtualhost funcionando
7.- COMPROBACIÓN DE LOS VIRTUALHOSTS CON UN SERVIDOR DNS
Para configurar un servidor DNS con los 2 nuevos dominios, hay que instalar el servidor Bind9 y añadir las entradas de los 2 Virtual Host. En la siguiente URL puedes encontrar un manual de como instalar tu propio servidor de DNS:
ENJOY!