viernes, 19 de enero de 2018

Configurar los servidores virtuales en Apache

El servidor principal o por defecto atiende las peticiones a menos que se configuren servidores virtuales.
Su cofiguración está definida directamente en los ficheros de configuración de apache, concretamente en el fichero /etc/apache2.conf.

Podemos comprobar como da igual lo que escribamos en la barra direcciones del navegador siempre que el nombre DNS se pueda resolver a la IP 192.168.100.254, es decir, la del propio servidor web.

Podemos probar con

http://servidor.aulasri.com
http://192.168.100.254
http://127.0.0.1

Y también con los alias

http://www.aulasri.com
http://dns1.aulasri.com
http://smtp.aulasri.com

Estos alias y en general toda la información para resolver el nombre DNS a la IP del servidor se crearon cuando vimos BIND9 y ahora vemos su utilidad.

El directorio raiz de documentos predeterminado del servidor web Apache para Ubuntu es /var/www/html.

Podemos abrir este archivo con el navegador y ver su contenido.
Comprobamos de este modo que se trata del mismo documento que el servidor web nos está sirviendo via web, usando el puerto 80 tcp, cuando lo hacemos a través del servidor escribiendo en la barra de direcciones las URLs anteriormente citadas.

 
Para cada host virtual definido en Apache se pueden establecer 3 parámetros diferentes. Estos son:

- Address (direccion)
- port (puerto)
- ServerName (nombre DNS del servidor / host virtual)

Para Address y port se puede establecer un valor explicito o dejarlo sin definir mediante Any en webmin o * directamente en la directiva VirtualHost (para la dirección o el puerto).

En el caso del ServerName se puede utilizar el valor por defecto de la configuración global o establecer un valor diferente que lo reemplace.


Estos parámetros permitirán establecer los criterios de correspondencia o no con el sitio web (host virtual) una vez confrontados con los propios valores de la solicitud.

Si hemos establecido el valor Any para algo de ellos estaremos indicando que nos valdría cualquier valor proporcionado en la solicitud (request) para ese parámetro a la hora de admitirlo como acierto (match).





Comparando todos datos proporcionados por la solicitud con los parámetros de cada host virtual de la lista en el servidor, se eligen aquellos que mejor se ajustan a la solicitud.

Se entiende que los host virtuales que mejor se ajustan son aquellos en lo que coinciden un mayor número de parámetros explícitos (no cuentan los establecidos como Any, ya que estos solo sirven para descartar)

Primero, se descartan hosts cuyo puerto o dirección no coincide con el de la solicitud. Para saber si la dirección no coincide se resuelve el nombre DNS proporcionado en la solicitud.

Aunque para aquellos hosts virtuales que estén configurados con la opción Any se entenderá que pueden corresponder con la solicitud y no serán descartados de la lista.




Si al final, después de tener en cuenta estos filtros solamente hay un ganador en cuanto número de parámetros coincidentes (3,2,1 o 0 y los Any no cuentan) ese será el host virtual al que se asociará la solicitud.

En caso de empate, habrá que tener en cuenta criterios de desempate.

El criterio para desempatar será escoger a aquel que se encuentre antes en la lista, que será aquel cuyo archivo de configuración tiene un nombre en el sistema de archivos menor en orden alfabético.

Hay que tener en muy en cuenta que pasa cuando usamos al mismo tiempo hosts virtuales basados en IP y host virtuales basados en nombre. La precaución que hay que tener en cuenta es la siguiente:

Toda solicitud HTTP recibida indicando un nombre DNS es resuelta a su correspondiente IP mediante el servicio DNS. Si existiera un host virtual basado en IP asociado a ese nombre que además indica número de puerto, este tendría preferencia sobre un host virtual que si coincidiera el nombre DNS pero que no indica número de puerto.


De DNS a IP.

Primero aquel que coincida la IP de forma explicita, si varios, aquel que explicite el puerto y coincida, y si varios (o ninguno explicita el puerto) entonces aquel que coincida en ServerName,

y después el primero fichero alfabético.


Criterio para determinar el host virtual que atiende la solicitud HTTP recibida en el servidor web Aache

No hay comentarios:

Publicar un comentario