Cibernetia > Manuales > Introducción a los servidores web > Conceptos básicos del servidor web
Búsqueda personalizada




Conceptos básicos del servidor web

Un 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:

  1. Espera peticiones en el puerto TCP indicado (el estándar por defecto para HTTP es el 80).
  2. Recibe una petición.
  3. Busca el recurso.
  4. Envía el recurso utilizando la misma conexión por la que recibió petición.
  5. Vuelve al segundo punto.

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áticos

Todos 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ón

La 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:

Directorio del discoDirectorio web
/home/apache/html/
/home/empresa/docs/docs
/home/jose/informe/informe-2003

En este caso, el servidor debería traducir las direcciones web de esta manera:

URLFichero de disco
/index.html/home/apache/html/index.html
/docs/manuales/producto.pdf/home/empresa/docs/manuales/producto.pdf
/empresa/quienes.html/home/apache/html/empresa/quienes.html
/informe-2003/index.html/home/jose/informe/index.html

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ámico

Uno 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 virtuales

Una 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 extra

Son 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:

  • Spelling (Apache). Esta prestación permite definir una página de error que se sirve cuando el servidor no ha encontrado el recurso solicitado. Proporciona una página web configurable generada por el servidor que muestra, por ejemplo, su estado de funcionamiento o su nivel de respuesta.
  • RXML Tags (Roxen). Añade al lenguaje HTML algunos tags (etiquetas, comandos de HTML), mejorados que permiten generar contenido dinámico.
  • SQL Tags (Roxen). Añade al HTML extendido de Roxen (RXML, antes mencionado), ciertos comandos para acceder a bases de datos SQL desde las páginas HTML.
  • Graphics (Roxen). Añade al HTML extendido de Roxen (RXML, antes mencionado), ciertos comandos para generar gráficos, títulos, etc.
  • Bfnsgd (AOLServer), mod_gd (Apache). Permite realizar gráficos partiendo de texto y de fuentes True Type.
  • mod_mp3 (Apache), ICECAST, MPEG (Roxen). Permiten convertir el servidor web en un servidor eficiente de música (con streaming, etc.).
  • Throttle (Roxen), mod_throttle (Apache). Facilitan herramientas para limitar la velocidad del servicio de HTTP, en función del usuario, del servidor virtual, etc.
  • Nsxml (AOLServer), tDOM (AOLServer), mod_xslt (Apache). Permiten transformar ficheros XML a partir de XSL.
  • Kill Frame (Roxen). Envía con cada página web un código que evita que la web quede enmarcada (como "frame") dentro de otra página web. En cierto modo, evita que nos "roben" nuestra página web.

Actuación como representantes

Algunos servidores permiten su uso como servidores intermedios (proxy servers). Se pueden usar los servidores intermedios para diferentes propósitos:

  • Servir de aceleradores de navegación (uso como proxy-caché).
  • Servir como aceleradores de acceso frontal para un servidor web, instalando diferentes servidores web que repliquen los distintos accesos a un servidor maestro (reverse-proxy o HTTP server acceleration).
  • Como frontales a algún servidor o algún protocolo.

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 adicionales

Algunos 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).

Manuales | Tesis: Ordenadores, Circuitos integrados...
english
Cibernetia