0% encontró este documento útil (0 votos)
19 vistas12 páginas

Configuración de VirtualHosts en Apache

El documento detalla la configuración y manejo del servidor web Apache en GNU/Linux, enfocándose en la funcionalidad de VirtualHost que permite alojar múltiples sitios web en un solo servidor. Se explican los tipos de VirtualHost basados en nombres y direcciones IP, así como los pasos para configurar y habilitar estos hosts virtuales. Además, se aborda la autenticación en Apache, incluyendo parámetros y métodos para restringir el acceso a ciertos sitios web.

Cargado por

eth256pna
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas12 páginas

Configuración de VirtualHosts en Apache

El documento detalla la configuración y manejo del servidor web Apache en GNU/Linux, enfocándose en la funcionalidad de VirtualHost que permite alojar múltiples sitios web en un solo servidor. Se explican los tipos de VirtualHost basados en nombres y direcciones IP, así como los pasos para configurar y habilitar estos hosts virtuales. Además, se aborda la autenticación en Apache, incluyendo parámetros y métodos para restringir el acceso a ciertos sitios web.

Cargado por

eth256pna
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Índice de contenido

Capítulo 3......................................................................................................................................................................... 3
Servidor web en GNU/Linux.............................................................................................................................. 3
Introducción........................................................................................................................................................ 3
Introducción al funcionamiento de los VirtualHost............................................................................ 4
¿Qué es un VirtualHost?.................................................................................................................................. 4
Virtualhost basados en nombres................................................................................................................ 6
VirtualHost basados en IP............................................................................................................................. 7
Configuración de VirtualHost....................................................................................................................... 7
Autentificación en Apache................................................................................................................................ 11

-2-
Capítulo 3

Servidor web en GNU/Linux

Introducción

En la segunda parte de éste capítulo examinaremos en detalle la configuración y el


manejo del servidor Web Apache. Estudiaremos una funcionalidad muy potente del mismo
que permite alojar a varios Sitios Web dentro de un mismo servidor y que es muy utilizada
actualmente.
Además veremos como separar, mantener y habilitar configuraciones separadas para
distintos sitios web y aprenderemos como habilitar y deshabilitar funcionalidades que vienen
contenidas en los módulos de Apache.

-3-
Introducción al funcionamiento de los VirtualHost

Recordemos que para que la web funcione se realizan muchas acciones en forma
transparente al usuario. Una de ellas consiste en traducir un nombre en una dirección IP
válida para poder establecer luego un camino o una forma de llegar hacia la computadora que
está brindando un servicio en particular (en este caso el de servir o publicar páginas web).

Ahora bien, cuando un navegador web consulta a un servidor Apache por una página
en particular, envía además información sobre el nombre del sitio sobre el cual está
solicitando respuestas (más claramente en la cabecera del paquete que el cliente envía a la red
figura el nombre del sitio que se desea visualizar). El servidor entonces recibe este mensaje y
lo procesa devolviendo al cliente el código en un lenguaje interpretado (HTML) que permite a
éste el parseado y visualización de la misma.

Ahora detengámonos a pensar el porque se hace ésto, porque en teoría si ya se


convirtió un nombre en una dirección IP, ¿ no sería redundante volver a enviar la información
sobre el nombre del sitio al que necesitamos acceder?.

En principio esto podría parecer inútil, pero veremos a continuación que esta es la
forma en que todos los navegadores y servidores web funcionan para poder hospedar muchos
sitios web en un mismo servidor, y dicha característica se conoce como Virtual Hosting o
Hosting Virtual.

¿Qué es un VirtualHost?

De manera predeterminada los sitios web se almacenan dentro del directorio


/var/www/. Esta directiva se encuentra dentro del archivo de configuración del apache
(/etc/apache2/[Link]) configurada como DocumentRoot, o en debian la encontramos
separada en el archivo /etc/apache2/sites-available/default.

El funcionamiento básico del servidor web es estar escuchando peticiones por el


puerto 80 y 443. Cuando una petición le llega buscará el recurso dentro de el directorio
/var/www y se lo enviará a quien lo haya solicitado. De esta forma, el servidor web solamente
puede atender peticiones o tener almacenado un solo sitio web.

Los virtualhost son una técnica que me permite tener alojados mas de un sitio web en
un solo equipo y según como lleguen las peticiones, el servidor web enviará un recurso u otro.

A la hora de alojar un sitio web en una computadora, los hosts virtuales pueden
basarse en Direcciones IP o en Nombres Diferentes.

-4-
Un Servidor Web utiliza virtual hosts basados en Direcciones IP cuando publica un
determinado sitio en base a la dirección IP de la interfaz por la cual recibe la solicitud. Ésta
configuración es poco aplicable y se utiliza, por ejemplo, en el caso en que tengamos un
Servidor Web que publique dos sitios, uno para la red interna de nuestra empresa y uno para
las peticiones que vienen desde el exterior, en éste caso es posible que se desee mostrar un
determinado sitio web en base al lugar de origen de la solicitud (sea de la LAN interna de
nuestra empresa o de visitas provenientes de internet).

Figura 1: Virtualhost en apache

En cambio, un Servidor Web utiliza virtual hosts basados en Nombres Distintos para
direccionar distintos sitios web dentro de una computadora, repasándolos por nombre. En el
momento en que un navegador web o cualquier aplicación cliente solicita un recurso, envía
una solicitud en un paquete utilizando el protocolo HTTP. En parte de ese paquete se
encuentra información correspondiente al sitio que se desea obtener, y es en base a esta
información que el Servidor Web puede publicar varios sitios diferenciados en el nombre con
el cual se visualizan los mismos, éste es el esquema más utilizado en Internet actualmente.

Apache fue uno de los primeros servidores web en soportar ambos modos de
configuración.

El esquema de hosts virtuales basado en nombres distintos utiliza información sobre la


solicitud de un recurso para publicar uno o varios sitios web en base a la solicitud que se haga.
Esto quiere decir que dependiendo del nombre del sitio que se solicite, Apache publicará
información de algún lugar en particular de nuestra computadora.

-5-
Virtualhost basados en nombres

Imaginemos que Gugler desea publicar 3 sitios web, uno referente a un portal de
contenidos con el cual sus alumnos pueden interactuar ([Link] un
segundo portal donde puedan realizarse consultas sobre temas referidos al dictado de cursos
y a software libre en general ([Link] y un sitio web donde se pueda
encontrar información de Gugler y material elaborado por sus alumnos
([Link] si no se utilizasen hosts virtuales basados en nombre, Gugler
necesitaría de 3 computadoras con 3 direcciones IP públicas para poder acceder a las mismas
desde internet, imaginemos el costo y lo poco práctico de éste esquema.

Figura 2: VirtualHost basados en nombre

Para que este esquema funcione además, necesitamos que lleguen peticiones al
Servidor Web Apache preguntando por los nombres que tenemos establecidos en cada uno de
los hosts virtuales, para lograr ésto debemos registrar éstos nombres en la entidad registrante
de dominios correspondiente a nuestro país ([Link] y luego contar con un Cliente DNS
Dinámico (puesto que la mayoría de las direcciones IP no son fijas), para informarle a nuestro
proveedor que nuestra dirección IP va cambiando conforme al tiempo (veremos estas
configuraciones en niveles posteriores del curso).

VirtualHost basados en IP

El esquema de Virtual Hosts basados en Direcciones IP permite a un servidor web


publicar uno u otro sitio en base al origen de la solicitud. Éste esquema es poco usado en la
actualidad.

-6-
Para entenderlo imaginemos el caso de una empresa que cuenta con distintos
departamentos, como Ventas, Contabilidad y Recursos Humanos. Consideremos que cada uno
de éstos departamentos tiene un rango de direcciones IP asignado y que está conectado al
servidor y lo visualiza con una dirección IP distinta (en nuestro caso las direcciones serían
[Link], [Link] y [Link]).

Figura 3: VirtualHost basados en IP

Apache puede configurarse para que cada departamento pueda visualizar sólo uno de
esos en base a de donde proviene la solicitud para ver un host virtual (obteniendo dicha
información en la dirección IP origen de la computadora que solicita el recurso) y en base a
ésto puede mostrar uno u otro sitio según corresponda. Si bien ésto es funcional, en la
actualidad existen herramientas como firewalls que permiten mejorar la seguridad de los
servicios, por lo que la seguridad no es una opción para elegir este esquema.

Configuración de VirtualHost

Recordemos que Apache maneja su configuración dentro del directorio /etc/apache2.


A la hora de permitir hospedar varios sitios web con configuraciones distintas se necesita un
esquema escalable que nos permita habilitar y deshabilitar sitios sin cambiar la configuración
del Servidor Web en su totalidad. Es por ésto que Apache plantea que cada host virtual tenga
su archivo de configuración, y no utilizar un sólo archivo para la configuración de todos los
sitios (lo cual sería algo poco escalable práctico a largo plazo).

La configuración entonces se organiza en dos directorios:

-7-
• /etc/apache2/sites-available: es aquí donde se almacena la configuración de los
virtualhost. En este directorio encontraremos un archivo por cada sitio web que
publiquemos en nuestro servidor. El archivo default existe siempre y nos provee con
configuraciones por defecto las cuales son un punto de partida para empezar a
configurar nuestro sitio.
• /etc/apache2/sites-enable: este directorio contiene enlaces que apuntan a los archivos
de configuración almacenados en sites-available. Cada vez que se reinicie o se relea la
configuración, apache cargará la definición de los VH apuntados mediante estos
enlaces. Con esta forma de trabajo bastará con eliminar el enlace simbólico de este
directorio para deshabilitar un sitio web, o agregar un enlace para habilitar un nuevo
host virtual.

Figura 4: Archivos de configuración

Debian GNU/Linux nos provee además de dos scripts que se encargan de agregar o
eliminar enlaces simbólicos por nosotros, los cuales son:

• a2ensite: (Apache 2 – Enable Site): este script crea un enlace en el directorio


/etc/apache2/sites-enabled que apuntará a su respectivo archivo de configuración,
ubicado en /etc/apache2/sites-available. Se utiliza para habilitar host virtuales una
vez que ya se ha creado su archivo de configuración.

• a2dissite: (Apache 2 – Disable Site): a su vez, éste script se encarga de borrar un


enlace simbólico ubicado en el directorio /etc/apache2/sites-enabled, con el objetivo
de deshabilitar un host virtual en particular.

Ambos scripts requieren como parámetro el nombre del host virtual que se desee
habilitar o deshabilitar respectivamente.

Cabe aclarar además que cada vez que habilitemos o deshabilitemos un sitio debemos
decirle al Servidor Web Apache que vuelva a leer su archivo de configuración para notificarse
de las modificaciones que realizamos. Para ésto podemos utilizar tanto las opciones restart o

-8-
reload del script de ejecución de Apache (invoke-rc.d apache2 restart o invoke-rc.d apache2
reload respectivamente).

Siempre conviene utilizar la opción reload, ya que ésta simplemente obliga a Apache a
volver a leer su configuración, pero no detiene e inicia el servicio (acción que sí realiza la
opción restart), y esto puede provocar que los otros sitios web que no estamos modificando
dejen de estar disponibles hasta que el servicio vuelva a estar activo.

Parámetros de configuración de un VH

Revisemos ahora algunos parámetros básicos para la configuración de un Host Virtual:

• <VirtualHost *> </VirtualHost>: estos tags abren y cierran la configuración para


cada Virtual Host que deseemos configurar en el archivo, es recomendable que
solamente configuremos un host virtual por archivo ya que sino el modelo planteado
por Apache carecería de sentido. El carácter “*” establece que ese sitio estará
disponible en todas las interfaces de red con las que cuenta la computadora y en el
puerto utilizado por defecto (puerto 80 para el protocolo HTTP).

• ServerAdmin: éste parámetro define la dirección de correo del administrador del


sitio, la cual es mostrada comúnmente en páginas de error o cuando ocurre algún
problema con el servicio, con el fin de mostrar una dirección de contacto para
comunicarse y reportar problemas con el funcionamiento del sitio.

• ServerName: establece el nombre del sitio para el cual se aceptarán peticiones, es


decir referencia al sitio web que se mostrará cuando llegue una petición para el mismo.

• DocumentRoot: establece el directorio en donde se ubican los archivos del host


virtual, se utiliza en conjunto con el parámetro anterior para mostrar los archivos de
un directorio en base al sitio que se desee visualizar. En este caso para toda petición
del sitio [Link] se mostrarán los archivos contenidos en el
directorio /var/www/gugler.

• ServerAlias: como su nombre lo indica, éste parámetro permite establecer alias para
distintos nombres de un host virtual. En éste caso se mostrará la misma información
para los sitios [Link] (sin www) y para cualquier subdominio de
[Link] (*.[Link]), nótese que podemos utilizar aquí comodines y
expresiones regulares como ya vimos anteriormente.

-9-
Pasos para configurarlo

A continuación estudiaremos los pasos a seguir para configurar y habilitar un


virtualhost en nuestro equipo.

1. Crear un archivo de configuración en /etc/apache2/sites-available


2. Crear un enlace que apunte a ese archivo en /etc/apache2/sites-enabled
3. Forzar a Apache a que vuelva a cargar su configuración

Primeramente debemos crear un archivo de configuración con los parámetros que


nuestro sitio necesite, con un nombre único en el directorio /etc/apache2/sites-available.

# nano /etc/apache2/sites-avalaible/[Link]

El segundo paso es habilitar este host virtual, creando un enlace que apunte a su
configuración en el directorio /etc/apache2/sites-enabled, podemos valernos del script
a2ensite para ésto.

# a2ensite [Link]

Finalmente el último paso es notificar al Servidor Web de los cambios realizados,


solicitando al mismo que vuelva a leer su configuración, ésto lo hacemos utilizando su script
de ejecución y utilizando el parámetro reload, para realizar ésta tarea.

# invoke-rc.d apache2 reload

Este procedimiento es el mismo que debemos ejecutar cada vez que deseemos
configurar un host virtual distinto en nuestra computadora.

Autentificación en Apache

Algunas veces podemos encontrarnos con la necesidad de restringir el acceso a algunos


sitios web y no permitir el ingreso a todas las personas.

Apache brinda para eso un módulo de autentificación que solicita a los usuarios que se
identifiquen antes de visitar un sitio web. Actualmente se soportan muchos mecanismos de
autentificación como un archivo de contraseñas, bases de datos, un servidor LDAP (Servidor
de Directorio Activo), las cuentas de usuarios de un sistema *Nix y demás.

- 10 -
Figura 5: Autentificación Básica con Apache

A la hora de configurar la autentificación de un sitio utilizaremos algunos parámetros


que guardaremos en un archivo oculto llamado .htaccess. Dicho archivo se especifica en una
directiva de configuración de seguridad dentro del archivo /etc/apache2/[Link].

Los parámetros a configurar son los siguientes:

• AuthName: cuando queremos acceder a un sitio, nos aparece un cuadro de diálogo


solicitando que nos identifiquemos al sistema, este parámetro define el mensaje a
mostrar en dicho cuadro de diálogo.

- 11 -
• AuthType: especifica el mecanismo que se va a usar para autentificar a los usuarios,
existen muchos y muy diversos. En nuestro caso utilizaremos el método Basic el cual
utiliza un archivo para almacenar las contraseñas.

• AuthUserFle: especifica la ubicación del archivo que contiene la información sobre los
usuarios que son válidos y la contraseña de los mismos. Para nuestro caso
/var/www/.htpasswd. Más adelante crearemos este archivo

• AuthGroupFile: al igual que en un sistema *Nix, podemos utilizar tanto usuarios y


grupos para la autentificación, de forma similar a lo que vimos en el primer nivel del
curso. Como en nuestro ejemplo simplemente utilizaremos un archivo con usuarios,
establecemos este parámetro en /dev/null.

• require user: este parámetro se utiliza cuando contamos con una lista de usuarios
grande y queremos habilitar sólo a algunos de ellos a acceder al sitio, pensemos en un
lugar donde tengamos muchos sitios restringidos y muchos usuarios, podemos
habilitar a determinados usuarios a determinados sitios con esta directiva, en este caso
solamente dejamos acceder a este sitio al usuario admin.

Finalmente vemos que con el comando htpasswd primeramente creamos el archivo de


información de contraseñas y luego agregamos todos los usuarios que necesitemos en el
mismo.

# htpasswd -c /var/www/.htpasswd admin

- 12 -

También podría gustarte