Servidor web - Web server

El interior y el frente de un servidor Dell PowerEdge , una computadora diseñada para montarse en un entorno de montaje en bastidor .
Se pueden utilizar varios servidores web para un sitio web de alto tráfico; aquí, los servidores Dell se instalan juntos y se utilizan para la Fundación Wikimedia .

Un servidor web es un software de computadora y hardware subyacente que acepta solicitudes a través de HTTP , el protocolo de red creado para distribuir páginas web o su variante segura HTTPS . Un agente de usuario , comúnmente un navegador web o un rastreador web , inicia la comunicación haciendo una solicitud de un recurso específico usando HTTP, y el servidor responde con el contenido de ese recurso o con un mensaje de error . El servidor también puede aceptar y almacenar recursos enviados desde el agente de usuario si está configurado para hacerlo.

Un servidor puede ser una sola computadora, o incluso un sistema integrado , como un enrutador con una interfaz de configuración incorporada, pero los sitios web de alto tráfico generalmente ejecutan servidores web en flotas de computadoras diseñadas para manejar un gran número de solicitudes de documentos, archivos multimedia y guiones interactivos. Un recurso enviado desde un servidor web puede ser un archivo preexistente disponible para el servidor, o puede ser generado en el momento de la solicitud por otro programa que se comunica con el programa del servidor. El primero suele ser más rápido y más fácil de almacenar en caché para solicitudes repetidas, mientras que el segundo admite una gama más amplia de aplicaciones. Los sitios web que ofrecen contenido generado generalmente incorporan archivos almacenados siempre que sea posible.

Tecnologías como REST y SOAP , que utilizan HTTP como base para la comunicación general de computadora a computadora, han extendido la aplicación de servidores web mucho más allá de su propósito original de servir páginas legibles por humanos.

Historia

El primer servidor web del mundo, una estación de trabajo NeXT Computer con Ethernet, 1990. La etiqueta de la carcasa dice: "Esta máquina es un servidor. ¡¡NO LA APAGUE !!"
Cobalt Qube 3 de Sun : un dispositivo de servidor informático (2002, descontinuado)

En marzo de 1989, Sir Tim Berners-Lee propuso un nuevo proyecto a su empleador CERN , con el objetivo de facilitar el intercambio de información entre científicos mediante el uso de un sistema de hipertexto . El proyecto dio como resultado que Berners-Lee escribiera varias bibliotecas de software y tres programas entre 1990 y 1991:

  • WWWNeXTStepEditor: un editor de navegador web , también llamado WorldWideWeb ;
  • WWWLineMode: un navegador web en modo de línea portátil que se utiliza para explorar el primer sitio web;
  • WWWDaemon: un servidor web , más tarde conocido como CERN httpd , que se ejecutaba en una computadora NeXTSTEP .

El primer sitio web de la World Wide Web del futuro se alojó en una computadora NeXTSTEP administrada por Tim Berner-Lee.

En 1991 (agosto) Tim Berner-Lee anunció el nacimiento de la tecnología WWW y animó a los científicos a adoptarla y desarrollarla.

En 1991 (diciembre) se instaló el primer servidor web fuera de Europa en SLAC (EE. UU.).

En 1991-1992, el CERN promovió activamente la adopción de esta nueva arquitectura entre los científicos escribiendo sobre ella en sus boletines y realizando presentaciones / demostraciones en vivo en varios institutos y universidades.

En 1993, "el CERN emitió una declaración pública en la que afirmaba que los tres componentes del software web (el cliente básico en modo de línea, el servidor básico y la biblioteca de código común) se colocaron en el dominio público".

En 1994 "Tim Berners-Lee dejó el CERN para crear el Consorcio World Wide Web (W3C) en el MIT " (en colaboración con CERN y DARPA) para regular el desarrollo posterior de las muchas tecnologías involucradas ( HTTP , HTML , etc.) a través de un proceso de estandarización.

En la práctica, entre 1991 y 1996, la simplicidad y eficacia de las primeras tecnologías utilizadas para navegar e intercambiar datos a través de la World Wide Web ayudó a trasladarlos a muchos sistemas operativos diferentes y difundir su uso inicialmente entre organizaciones científicas y universidades y luego también entre el público y el público. empresas privadas y finalmente a usuarios finales privados.

En esos primeros años, varias organizaciones, incluidas las privadas, desarrollaron nuevas implementaciones tanto de navegadores web como de servidores web (es decir, NCSA HTTPd , Apache HTTPd , AOLserver , Netscape Enterprise Server , IIS , etc.), iniciando así una fuerte competencia que desde entonces ha crecido exponencialmente (ver también Cuota de mercado de software de servidor web ).

Características comunes básicas

Aunque los programas de servidor web difieren en cómo se implementan, la mayoría de ellos ofrecen las siguientes características básicas comunes.

  • HTTP : soporte para una o más versiones del protocolo HTTP para enviar versiones de respuestas HTTP compatibles con versiones de solicitudes HTTP del cliente, por ejemplo, HTTP / 1.0, HTTP / 1.1 más, si está disponible, HTTP / 2 , HTTP / 3 ;
  • Registro : por lo general, los servidores web también tienen la capacidad de registrar cierta información, sobre las solicitudes de los clientes y las respuestas del servidor, para registrar archivos con fines estadísticos y de seguridad.

Algunas otras características populares (solo una selección muy corta) son:

Traducción de ruta

Los servidores web pueden asignar el componente de ruta de un localizador uniforme de recursos (URL) en:

Para una solicitud estática, la ruta URL especificada por el cliente es relativa al directorio raíz del sitio web de destino.

Considere la siguiente URL tal como la solicitaría un cliente a través de HTTP:

http://www.example.com/path/file.html

El agente de usuario del cliente lo traducirá en una conexión awww.example.comcon la siguiente solicitud HTTP /1.1:

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive

El servidor web en www.example.comagregará la ruta proporcionada a la ruta del directorio raíz del sitio web (Host). En un servidor Apache , esto es comúnmente/ inicio / www / sitio web(en máquinas Unix , generalmente/ var / www / sitio web). El resultado es el recurso del sistema de archivos local:

/home/www/www.example.com/path/file.html

El servidor web luego lee el archivo , si existe, y envía una respuesta al navegador web del cliente. La respuesta describirá el contenido del archivo y contendrá el archivo en sí o aparecerá un mensaje de error diciendo que el archivo no existe o no está disponible.

Servidores web en modo kernel y en modo usuario

Un software de servidor web puede incorporarse al kernel del sistema operativo o en el espacio del usuario (como otras aplicaciones normales).

Los servidores web que se ejecutan en modo kernel pueden tener acceso directo a los recursos del kernel y, por lo tanto, pueden ser, en teoría, más rápidos que los que se ejecutan en modo usuario; De todos modos, existen desventajas al ejecutar un servidor web en modo kernel, por ejemplo: dificultades en el desarrollo ( depuración ) de software, mientras que los errores críticos en tiempo de ejecución pueden provocar problemas graves en el kernel del sistema operativo.

Los servidores web que se ejecutan en modo de usuario deben solicitar permiso al sistema para utilizar más memoria o más recursos de CPU. Estas solicitudes al kernel no solo toman tiempo, sino que no siempre se satisfacen porque el sistema reserva recursos para su propio uso y tiene la responsabilidad de compartir los recursos de hardware con todas las demás aplicaciones en ejecución. La ejecución en modo de usuario también puede significar copias de búfer inútiles, que son otra limitación para los servidores web en modo de usuario.

Hoy en día, casi todo el software de servidor web se ejecuta en modo de usuario (porque muchas de las pequeñas desventajas anteriores se han superado con hardware más rápido, nuevas versiones de SO , llamadas al sistema de SO mucho más rápidas y nuevo software de servidor web). Consulte también la comparación de software de servidor web para descubrir cuál de ellos se ejecuta en modo kernel o en modo usuario (también denominado espacio kernel o espacio de usuario).

Actuaciones

Para mejorar la experiencia del usuario, los servidores web deben responder rápidamente (lo antes posible) a las solicitudes de los clientes; a menos que la respuesta de contenido se limite (por configuración) para algún tipo de archivos (por ejemplo, archivos grandes, etc.), el contenido de datos devuelto también debe enviarse lo antes posible (alta velocidad de transferencia).

Para el software de servidor web, las principales estadísticas de rendimiento clave (medidas bajo una carga variable de clientes y solicitudes por cliente) son:

  • número de máximo solicitudes por segundo (RPS, similar aQPS, según la versión y configuración HTTP, el tipo de solicitudes HTTP, etc.);
  • tiempo de respuesta de latencia de la red (generalmente en milisegundos) para cada nueva solicitud de cliente;
  • rendimiento en bytes por segundo (según el tamaño del archivo, el contenido almacenado en caché o no, el ancho de banda de red disponible, el tipo de protocolo HTTP utilizado, etc.).

Por encima de tres, el número de rendimiento puede variar notablemente según el número de conexiones TCP activas, por lo que un cuarto número de estadística es el nivel de simultaneidad admitido por un servidor web bajo una configuración de servidor web específica, tipo de sistema operativo y recursos de hardware disponibles.

Por último, pero no menos importante, el modelo de servidor específico y otras técnicas de programación utilizadas para implementar un programa de servidor web pueden sesgar el rendimiento y, en particular, el nivel de escalabilidad que se puede alcanzar con una carga pesada o cuando se utiliza hardware de gama alta (muchas CPU, discos, etc. .).

Los rendimientos de un servidor web generalmente se comparan mediante el uso de una o más de las herramientas de prueba de carga automatizadas disponibles .

Límites de carga

Un servidor web (instalación de programa) generalmente tiene límites de carga predefinidos, porque solo puede manejar un número limitado de conexiones de cliente concurrentes (generalmente entre 2 y varias decenas de miles para cada proceso de servidor web activo, consulte también el problema C10k y el Problema C10M ) y solo puede atender un cierto número máximo de solicitudes por segundo dependiendo de:

  • su propia configuración,
  • el tipo de solicitud HTTP promedio,
  • si el contenido solicitado es estático o dinámico,
  • si el contenido está almacenado en caché o comprimido ,
  • la velocidad media de la red entre los clientes y el servidor web,
  • el número de conexiones TCP activas ,
  • las limitaciones de hardware y software o la configuración del sistema operativo de las computadoras en las que se ejecuta el servidor web.

Cuando un servidor web está cerca o por encima de sus límites, se sobrecarga y, por lo tanto, puede dejar de responder.

Causas de sobrecarga

En cualquier momento, los servidores web pueden sobrecargarse debido a:

  • Exceso de tráfico web legítimo. Miles o incluso millones de clientes que se conectan al sitio web en un intervalo corto, por ejemplo, efecto Slashdot ;
  • Ataques distribuidos de denegación de servicio . Un ataque de denegación de servicio (ataque DoS) o un ataque distribuido de denegación de servicio (ataque DDoS) es un intento de hacer que una computadora o un recurso de red no esté disponible para sus usuarios previstos;
  • Gusanos informáticos que a veces causan tráfico anormal debido a millones de equipos infectados (no coordinados entre ellos)
  • Los gusanos XSS pueden generar mucho tráfico debido a millones de navegadores o servidores web infectados;
  • Bots de Internet Tráfico no filtrado / limitado en sitios web grandes con muy pocos recursos (ancho de banda, etc.);
  • Internet (red) se ralentiza (debido a la pérdida de paquetes, etc.) de modo que las solicitudes de los clientes se atienden más lentamente y el número de conexiones aumenta tanto que se alcanzan los límites del servidor;
  • Servidores web ( computadoras ) indisponibilidad parcial. Esto puede suceder debido a mantenimiento o actualización necesarios o urgentes, fallas de hardware o software, fallas de back-end (por ejemplo, base de datos ), etc .; en estos casos, los servidores web restantes pueden recibir demasiado tráfico y sobrecargarse.

Síntomas de sobrecarga.

Los síntomas de un servidor web sobrecargado son:

  • Las solicitudes se atienden con retrasos (posiblemente largos) (de 1 segundo a algunos cientos de segundos).
  • El servidor web devuelve un código de error HTTP , como 500, 502, 503, 504, 408 o incluso un 404 intermitente .
  • El servidor web rechaza o restablece (interrumpe) las conexiones TCP antes de devolver cualquier contenido.
  • En casos muy raros, el servidor web devuelve solo una parte del contenido solicitado. Este comportamiento puede considerarse un error , incluso si suele surgir como un síntoma de sobrecarga.

Técnicas anti-sobrecarga

Para superar parcialmente los límites de carga por encima del promedio y evitar la sobrecarga, los sitios web más populares utilizan técnicas comunes como:

  • Ajuste de los parámetros del sistema operativo para las capacidades y el uso del hardware.
  • Ajuste de los parámetros de los servidores web para mejorar la seguridad, el rendimiento, etc.
  • Implementar técnicas de caché web (no solo para contenidos estáticos sino, siempre que sea posible, también para contenidos dinámicos).
  • Gestionar el tráfico de la red mediante:
    • Cortafuegos para bloquear el tráfico no deseado procedente de fuentes de IP erróneas o con patrones erróneos;
    • Administradores de tráfico HTTP para eliminar, redirigir o reescribir solicitudes que tengan patrones HTTP incorrectos ;
    • Gestión del ancho de banda y modelado del tráfico , con el fin de suavizar los picos en el uso de la red;
  • Usar diferentes nombres de dominio y direcciones IP para servir diferentes contenidos (estáticos y dinámicos) por servidores web separados, por ejemplo:
    • http://static.example.com
    • http://www.example.com
  • Usar diferentes nombres de dominio, direcciones IP y computadoras para separar archivos grandes ( download.*) de archivos pequeños y medianos ( static.*) y del sitio dinámico principal (tal vez donde algunos contenidos se almacenan en una base de datos backend ) ( www.*); la idea es poder almacenar en caché por completo archivos pequeños y medianos y servir de manera eficiente archivos grandes o grandes (más de 10 - 1000 MB) (sin afectar el rendimiento del sitio dinámico bajo una gran carga) mediante el uso de diferentes configuraciones para cada (grupo) de las computadoras del servidor web, por ejemplo:
    • http://download.example.com
    • http://static.example.com
    • http://www.example.com
  • Utilizando muchos servidores web (programas) por computadora, cada uno vinculado a su propia tarjeta de red y dirección IP .
  • Usar muchos servidores web (computadoras) que están agrupados detrás de un equilibrador de carga para que actúen o se vean como un gran servidor web.
  • Agregar más recursos de hardware (es decir , RAM , discos rápidos ) a cada computadora.
  • Utilizar programas informáticos más eficientes para servidores web (es decir, programas que también utilizan técnicas de copia cero , etc.).
  • Uso de la interfaz de puerta de enlace de servidor web más eficiente para procesar solicitudes dinámicas.
  • Usar otras técnicas de programación y soluciones alternativas , especialmente si se trata de contenido dinámico, para acelerar las respuestas HTTP.
  • Usar las últimas versiones eficientes de HTTP (por ejemplo, más allá de usar HTTP / 1.1 común también habilitando HTTP / 2 y tal vez HTTP / 3 también siempre que el software de servidor web disponible tenga soporte confiable para los dos últimos protocolos) para reducir mucho el número de TCP / Conexiones IP iniciadas por cada cliente y el tamaño de los datos intercambiados (debido a una representación de encabezados HTTP más compacta, compresión de datos, etc.); De todos modos, incluso si los protocolos HTTP (2 y 3) más nuevos generalmente generan menos tráfico de red para cada solicitud / respuesta de datos, es posible que requieran más recursos del sistema operativo (es decir, RAM y CPU) utilizados por el software del servidor web (debido a los datos cifrados , la compresión de datos en the fly y otros detalles de implementación) .

Cuota de mercado

El LAMP (paquete de software) (aquí también con Squid ), compuesto completamente de software gratuito y de código abierto , es una solución de alto rendimiento y alta disponibilidad para trabajos pesados ​​para un entorno hostil.
Gráfico:
cuota de mercado de todos los sitios de los principales servidores web 2005-2018

Febrero 2021

A continuación se muestran las estadísticas más recientes de la participación de mercado de todos los sitios de los principales servidores web en Internet según la encuesta de servidores web de febrero de 2021 de Netcraft .

Producto Vendedor Por ciento
nginx NGINX, Inc. 34,54%
apache apache 26,32%
IIS Microsoft 6,5%
OpenResty Fundación de software OpenResty 6,36%
Servidor Cloudflare Cloudflare, Inc. 5,0%

Todos los demás servidores web son utilizados por menos del 5% de los sitios web.

Febrero de 2020

A continuación se muestran las últimas estadísticas de la participación de mercado de todos los sitios de los principales servidores web en Internet según la Encuesta de servidores web de febrero de 2020 de Netcraft .

Producto Vendedor Por ciento
nginx NGINX, Inc. 36,48%
apache apache 24,5%
IIS Microsoft 14,21%
OpenResty Fundación de software OpenResty 4,00%
GWS Google 3,18%
Servidor Cloudflare Cloudflare, Inc. 3,0%

Todos los demás servidores web son utilizados por menos del 3% de los sitios web.

Febrero de 2019

A continuación se muestran las últimas estadísticas de la participación de mercado de todos los sitios de los principales servidores web en Internet según la encuesta de servidores web de febrero de 2019 de Netcraft .

Producto Vendedor Por ciento
IIS Microsoft 28,42%
apache apache 26,16%
nginx NGINX, Inc. 25,34%
GWS Google 1,66%

Todos los demás servidores web son utilizados por menos del 1% de los sitios web.

Julio de 2018

A continuación se muestran las últimas estadísticas de la participación de mercado de todos los sitios de los principales servidores web en Internet según la encuesta de servidores web de febrero de 2018 de Netcraft .

Producto Vendedor Por ciento
IIS Microsoft 34,50%
apache apache 27,45%
nginx NGINX, Inc. 24,32%
GWS Google 1,20%

Todos los demás servidores web son utilizados por menos del 1% de los sitios web.

Febrero de 2017

A continuación se muestran las estadísticas más recientes de la participación de mercado de todos los sitios de los principales servidores web en Internet según la Encuesta de servidores web de febrero de 2017 de Netcraft .

Producto Vendedor Enero de 2017 Por ciento Febrero de 2017 Por ciento Cambio Color de la carta
IIS Microsoft 821,905,283 45,66% 773,552,454 43,16% −2,50 rojo
apache apache 387,211,503 21,51% 374,297,080 20,89% −0,63 negro
nginx NGINX, Inc. 317,398,317 17,63% 348,025,788 19,42% 1,79 verde
GWS Google 17,933,762 1,00% 18,438,702 1,03% 0,03 azul

Febrero de 2016

A continuación se muestran las estadísticas más recientes de la participación de mercado de todos los sitios de los principales servidores web en Internet según la encuesta de servidores web de febrero de 2016 de Netcraft .

Producto Vendedor Enero de 2016 Por ciento Febrero de 2016 Por ciento Cambio Color de la carta
apache apache 304,271,061 33,56% 306,292,557 32,80% 0,76 negro
IIS Microsoft 262,471,886 28,95% 278,593,041 29,83% 0,88 rojo
nginx NGINX, Inc. 141,443,630 15,60% 137,459,391 16,61% −0,88 verde
GWS Google 20,799,087 2,29% 20,640,058 2,21% −0,08 azul

Apache, IIS y Nginx son los servidores web más utilizados en la World Wide Web.

Ver también

Referencias

enlaces externos