|
|
|
|
|
Conceptos básicos del servidor webUn servidor web es un programa que sirve para atender y responder a las diferentes peticiones de los navegadores, proporcionándo los recursos que soliciten usando el protocolo HTTP o el protocolo HTTPS (la versióncifrada y autenticada). Un servidor web básico cuenta con un esquema de funcionamiento muy simple, basado en ejecutar infinitamente el siguiente bucle:
Un servidor web que siga el esquema anterior cumplirá todos los requisitos básicos de los servidores HTTP, aunque sólo podrá servir ficheros estáticos. A partir del anterior esquema se han diseñado y desarrollado todos los servidores de HTTP que existen, variando sólo el tipo de peticiones (páginas estáticas, CGIs, Servlets, etc.) que pueden atender, en función de que sean o no sean multi-proceso o multi-hilados, etc. A continuación se detallan algunas de las características básicas de los servidores web, que amplían, obviamente el esquema anterior. Servicio de ficheros estáticosTodos los servidores web deben incluir, al menos, la capacidad para servir los ficheros estáticos que se hallen en alguna parte del disco. Un requisito básico es la capacidad de especificar qué parte del disco se servirá. No resulta recomendable que el programa servidor obligue a usar un directorio concreto, aunque sí puede tener uno por defecto. La mayoría de servidores web permiten añadir otros directorios o subdirectorios para servir, especificando en qué punto del "sistema de ficheros" virtual del servidor se localizarán los recursos. Algunos servidores web permiten también especificar directivas de seguridad (quién puede acceder a los recursos), mientras que otros hacen posible la especificación de los ficheros que se deben considerar como índice del directorio. Seguridad y autenticaciónLa mayoría de los servidores web actuales permiten controlar desde el programa servidor los aspectos relacionados con la seguridad y la autenticación de los usuarios. Podemos, por ejemplo, tener la siguiente situación:
En este caso, el servidor debería traducir las direcciones web de esta manera:
El modo más sencillo de control es el facilitado por el uso de ficheros .htaccess. Se trata de un sistema de seguridad que deriva de uno de los primeros servidores web ("NCSA httpd"), que consiste en incluir un fichero de nombre .htaccess en cualquier directorio del contenido web que se deba a servir, indicando en este fichero qué usuarios o máquinas, etc. tienen acceso a los ficheros y a los diferentes subdirectorios del directorio donde está instalado el .htaccess. Como el "NCSA httpd" fue el servidor más utilizado durante mucho tiempo, la mayoría de servidores actuales permiten utilizar un fichero .htaccess respetando la sintaxis original del servidor de NCSA. Hay otros servidores que permiten especificar reglas de servicio de directorios, subdirectorios y ficheros en la configuración del programa servidor web, indicando qué usuarios, máquinas, etc. tienen acceso al recurso indicado. En cuanto a la autenticación (validación del nombre de usuario y la contraseña o clave indicados por el cliente), las prestaciones ofrecidas por los difernetes servidores web son variopintas. La mayoría permite, al menos, facilitar al servidor web un fichero con nombres de usuario y contraseñas mediante el cual se pueden validar los datos enviado desde el cliente. De todas formas, es frecuente que los servidores faciliten pasarelas que permiten delegar las tareas de autenticación y validación en otro software (como RADIUS, LDAP, etc.). Si se utiliza un sistema operativo como Linux, el cual dispone de una infraestructura para autenticación como PAM ("pluggable authentication modules"), se puede usar tal funcionalidad como modo de autenticación del servidor web, permitiéndo de este modo utilizar los múltiples métodos disponibles en PAM para autenticar contra diversos sistemas de seguridad. Contenido dinámicoUno de los aspectos fundamentales del servidor web elegido es el nivel de soporte que ofrece para servir contenido dinámico. Puesto que la mayor parte del contenido web que se sirve no viene de páginas estáticas, sino que se genera de forma dinámica, y esta tendencia se mueve claramente al alza, el soporte para contenido de tipo dinámico que ofrece un servidor web es uno de los puntos críticos en la elección. La mayor parte de los servidores web ofrecen soporte para CGI (se debe recordar que los CGI son el método más antiguo y sencillo para generar contenido dinámico). Otros muchos ofrecen soporte para algunos lenguajes de programación (normalemente lenguajes interpretados) como PHP, JSP, ASP, etc. Es muy recomendable que el servidor web que vayamos a utilizar proporcione soporte para algunos de estos lenguajes, especialmente PHP, sin tener en cuenta JSP, que normalmente requerirá un software externo para funcionar (como un contenedor de Servlets). La oferta es muy amplia, pero antes de elegir un lenguaje de programación de servidor se debe plantear si se desea un lenguaje muy estándar para que la aplicación no dependa de un servidor web o una arquitectura concreta o si, al contrario, la portabilidad no es prioritaria y sí lo es alguna otra prestación concreta que pueda ofrecer algún lenguaje de programación concreto. Servidores virtualesUna prestación que gana aceptación y usuarios rápidamente, muy especialmente entre los proveedores de servicios de Internet y las empresas de alojamiento de dominios, es la capacidad de algunos servidores web de facilitar múltiples dominios con una única dirección IP, discriminando entre los diferentes dominios alojados en función del nombre de dominio enviado en la cabecera HTTP. Esta prestación permite la administración racional y ahorradora de un bien escaso, las direcciones IP. Si se necesitan muchos nombres de servidor (porque proporcionamos alojamiento o por cualquier otro motivo) debemos asegurarnos de que el servidor web elegido ofrezca esta facilidad y que el soporte que ofrece para servidores virtuales permita una configuración distinta para cada servidor. Sería perfecto que cada servidor se comportara como si fuese un ordenador diferente. Prestaciones extraSon muchas las prestaciones que ofrecen los diferentes servidores web para diferenciarse de la competencia. Algunas son realmente útiles y pueden decidir la elección de servidor. Hay que ser conscientes, sin embargo, de que si utilizamos algunas de estas características, o si éstas devienen imprescindibles, ello nos puede ligar a un determinado servidor web e imposibilitar una migración posterior. Algunas características adicionales de ciertos servidores web de código libre son:
Actuación como representantesAlgunos servidores permiten su uso como servidores intermedios (proxy servers). Se pueden usar los servidores intermedios para diferentes propósitos:
Ciertos servidores web permiten su uso como servidores intermedios para alguno de los usos mencionados. Sin embargo, para los 2 primeros usos existen programas específicos de código libre que son más eficientes, entre los que destaca, por ejemplo, Squid (http://www.squid-cache.org/), que se considera unánimemente como uno de los mejores productos de proxy. Hay módulos para diversos servidores web que permiten su uso como frontales para otros servidores especializados en otros servicios. Protocolos adicionalesAlgunos servidores, no sólo atienden y sirven peticiones HTTP (y HTTPS), sino que pueden servir también peticiones basadas en otros protocolos o en protocolos implementados sobre HTTP. Algunos de estos protocolos pueden ser requisitos fundamentales de nuestro sistema (en función de nuestras necesidades) y decantar nuestra elección de un programa servidor. |
|
Los manuales titulados Introducción a las aplicaciones web, Instalación del servidor web y Servicios web han sido extraídos, con algunas modificaciones, del manual "Desarrollo de aplicaciones web", publicado por la UOC dentro de su máster de software libre, escrito por Carles Mateu i Piñol.
El manual tiene licencia GFDL, la cual otorga permiso para copiar, distribuir y modificar el documento según los términos de la GNU Free Documentation License, Version 1.2 o cualquiera posterior publicada por la Free Software Foundation, sin secciones invariantes ni textos de cubierta delantera o trasera.
Se puede acceder al documento original en: http://www.uoc.edu/masters/esp/img/873.pdf (versión imprimible) y http://www.uoc.edu/masters/esp/img/692.zip (versión editable, formato zip).
