Servidor web
-
Upload
andres-luzon -
Category
Documents
-
view
146 -
download
4
Transcript of Servidor web
UNIANDES
UNIVERSIDAD REGIONAL AUTONOMA DE LOS ANDES
FACULTAD DE SISTEMAS MERCANTILES
CARRERA DE SISTEMAS
MODALIDAD PRESENCIAL
TEMA:SERVIDORES WEB
AUTORES: ANDRES LUZÓN
TUTOR: ING. DIEGO PALMA
FECHA: 06/02/2013
NIVEL: QUINTO
PERIODO OCTUBRE 2012–ABRIL 2013
SERVIDOR WEB
Un servidor web es un programa que sirve para atender y responder a las diferentes
peticiones de los navegadores, proporcionando 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 disco Directorio 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:
URL Fichero 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 diferentes 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 enviados 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 ("pluggableauthentication 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 (normalmente
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.
KillFrame (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 ,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.