X

Servidor Web

Los servidores web son uno de los aspectos más importantes de Internet, ya que se trata de los encargados de despachar las páginas a los usuarios. Sin ellos, Internet como lo conocemos hoy en día simplemente no sería posible. Hoy veremos a fondo varios de los detalles más interesantes de los servidores web y su funcionamiento.

¿Qué es un servidor web?

Quienes tengan conocimientos sobre lo que es un servidor no deben confundirlo con un servidor web, porque son dos cosas distintas, aunque sí es cierto que uno forma parte del otro, ya que de hecho el servidor web es uno de los componentes de un servidor. El server (o servidor) es el equipo en el cual se alojan los sitios o aplicaciones web, mientras que el servidor web es un software que forma parte del servidor.

El servidor web (también llamado webserver en inglés) es el software que se encarga de despachar el contenido de un sitio web al usuario.

Este proceso de despacho, que a simple vista parece muy simple, es en realidad más complejo de lo que parece, pues toda la «magia» de un webserver ocurre fuera de quien está navegando por un sitio web. Existen multitud de servidores web, y entre los más conocidos podemos encontrar por ejemplo a Apache, Nginx, LiteSpeed o IIS.

? Despega hoy mismo: elige tu Plan de Hosting con LiteSpeed

El servidor web más rápido, seguro y estable desde $8,25/mes

Los servidores web varían mucho de uno a otro, por ejemplo si comparamos Apache y Nginx veremos que tienen diferencias muy notorias, aunque el objetivo final es el mismo: despachar contenido al usuario.

El proceso de despacho comienza en nuestro browser web. Al escribir la dirección de un sitio web y presionar enter comienza la siguiente secuencia: el S.O hace una búsqueda DNS para encontrar en cuál servidor está alojado el sitio en cuestión.

Cuando el server es encontrado, el navegador le pide el contenido del sitio web, y acto seguido el webserver procesa este pedido y envía dicho contenido al browser, lo cual da como resultado la visualización del sitio en nuestra pantalla.

Si quieres profundizar más sobre el procesamiento y despacho de datos desde el server, te recomendamos leer: Funcionamiento de un Servidor Web

Funciones de un servidor web

Como ya comentábamos previamente, existen distintos servidores web, y por ende existen diferencias entre ellos. Cada webserver tiene sus propias prestaciones y está destinado a ser utilizado en ciertos entornos y configuraciones.

Uno de los factores más importantes a la hora de decidir cuál server web utilizar es el sistema operativo de nuestro server, que es otra de sus características, siempre corren bajo un S.O.

Por ejemplo en Windows Server la elección más tradicional es IIS de Microsoft, mientras que en otros como los basados en Linux se usa mucho Apache, Nginx y LiteSpeed.

Los sistemas de archivos también suelen variar según el entorno del server, en Linux generalmente tenemos EXT4 y en WS se usa REFS y también NFS, aunque existen otros.

Es posible también encontrar servidores web que son utilizados puramente para despachar contenidos estáticos como imágenes, videos, etc., ya que son muy buenos en dicha tarea, y en otros casos también tenemos los que son utilizados frecuentemente en entornos de hosting compartido, despachando varios sitios bajo una misma IP, o bajo IPs dedicadas.

También hay que destacar la compatibilidad con sitios dinámicos y los límites que podemos configurar a nivel de recursos como transferencia por ejemplo, permitiendo ser muy flexibles para revender hosting o hospedar sitios masivamente.

Un punto muy importante a tener en cuenta es el hardware, ya que el rendimiento de un server web tiene que ir acompañado del CPU, RAM y unidad de almacenamiento, cuanto mejores sean mejor será el despacho de nuestro sitio.

Si te interesa profundizar y conocer todas las funciones de un server HTTP, te recomendamos leer: Características de un Servidor Web.

Para qué sirve un servidor web

Como ya habíamos comentado, la principal tarea que tiene un servidor web es la de despachar el contenido de un sitio web al usuario. Esto se logra mediante un proceso que a nuestros ojos no toma más que un segundo, pero a nivel del server es una secuencia más sofisticada de lo que parece.

Para que el server web pueda cumplir con su rol, tendrá primero que nada que recibir una petición de parte de un browser, y a continuación buscar en los archivos del server la información que le está siendo solicitada.

Una vez que los archivos del sitio son localizados, el servidor web procede a interpretar las líneas de código y a enviar el resultado de regreso al navegador, el cual lo mostrará para nosotros.

Cuando este proceso se completa podemos decir que el web server ha cumplido con su tarea de servirnos el sitio web en cuestión para que nosotros podamos utilizarlo.

Servidores web más utilizados

Entre los servidores web más utilizados del mundo podemos encontrar algunos como Apache, Nginx, LiteSpeed & IIS. Los primeros tres son predominantes en sistemas Linux, mientras que IIS está orientado para entornos Windows.

Hoy en día la mayor cuota de mercado la posee IIS de Microsoft, con cerca de 688 millones de sitios según los datos del más reciente análisis de Netcraft. Le siguen Nginx con 358 millones de sitios y Apache con 313 millones.

LiteSpeed no está entre los más utilizados en este sentido, pero sin dudas merece una mención especial.

  • Apache fue, durante casi 2 décadas, el webserver más utilizado del mundo, aunque en los últimos años ha perdido bastante terreno frente a rivales como Nginx o IIS. Aún así, sigue siendo un servidor web sólido, seguro, eficaz y fácil de configurar, sin mencionar que sigue siendo la opción predefinida para los servidores que corren cPanel, el panel de control más popular del mercado.
  • Nginx es un webserver que ha tenido un crecimiento increíble en cuestión de unos pocos años, al punto de que actualmente está por delante de Apache. Considerado por muchos como el web server más rápido hoy en día, su alta capacidad para despachar contenido, su seguridad y solidez lo convierten en la opción número 1 de muchos administradores de sistemas.
  • LiteSpeed es otro de los grandes webservers que podemos encontrar en el mercado. Si bien se trata de un software de pago, este servidor web ha demostrado que tiene un gran potencial. Combinando las reglas y flexibilidad de Apache y la velocidad y seguridad de Nginx, LiteSpeed se está abriendo camino como una alternativa muy sólida, rápida y segura. Su compatibilidad con cPanel también hace que sea popular entre servidores que utilizan dicho panel y que necesitan un mejor rendimiento que el brindado por Apache.
  • IIS se ha convertido en poco tiempo en el webserver más utilizado del mundo. Desarrollado por Microsoft, IIS es el servidor web que viene integrado por defecto en servidores que corren Windows Server. Si bien es muy diferente a sus rivales de Linux, no deja de ser un webserver seguro, rápido y fácil de manejar.

Como vemos, existen muchos tipos de servidores web, pero sin duda que estos tres que hemos mencionado antes son los más populares hoy en día.


? ¿Te interesa saber cuál es el mejor server web? Mira esta comparativa: 

Apache vs Nginx vs LiteSpeed


Aplicaciones populares que corren en servidores web

Previamente comentábamos que un servidor web puede interpretar el lenguaje de programación de un sitio para poder despachar el contenido al cliente que le envía la solicitud. En otras palabras, los servidores web se caracterizan por ser compatibles con múltiples lenguajes de programación, entre los que podemos encontrar por ejemplo a PHP, ASP, Perl, Python, Ruby, Go y NodeJS.

  • PHP: ha sido durante un largo tiempo (y por supuesto sigue siendo) el lenguaje de programación web más utilizado a nivel mundial, y no existe otro que tenga una cuota ni por asomo cercana. Su facilidad de aprendizaje y potencial lo han llevado al puesto número del ranking de los más utilizados, y parece que seguirá allí durante un largo tiempo más.
  • ASP.NET: es una de las tecnologías más utilizadas en servers Windows, y está orientado a la creación de contenido del tipo dinámico, web apps y XML. Suele ir de la mano con el server web de Microsoft, IIS, aunque actualmente está disponible también para entornos Linux, sin embargo su uso allí no es elevado.
  • Perl: es un lenguaje complejo pero a su vez muy poderoso, y si sabemos usarlo es posible aplicarlo a tareas áreas muy diversas, como por ejemplo programación de redes, bioinformática y finanzas.
  • Python: se trata de un lenguaje multiplataforma ampliamente usado, de código abierto y orientado principalmente al contenido dinámico. Es común utilizarlo cuando se requiere de programación orientada a objetos y también tiene soporte para programación imperativa.
  • Ruby: otro lenguaje de contenido dinámico, Ruby nace con fuertes inspiraciones de Perl y Python, resultando ser un lenguaje orientado a objetos y reflexivo. Cuando es utilizado en desarrollo web, se suele hacer junto al framework Ruby on Rails. Una característica particular es que, dependiendo de cómo lo utilicemos, puede que no sea necesario que vaya de la mano de un servidor HTTP, como sí es el caso de PHP por ejemplo.
  • Go: creado por Google e inspirado en otros como Python y C, Go es un poderoso lenguaje multiplataforma, pero que a su vez resulta ser sencillo y liviano, con una declaración de variables también muy simple.
  • NodeJS: es un entorno que ha dado de qué hablar en los últimos años dado su gran potencial. Se utiliza principalmente en la ejecución de código JavaScript, es asíncrono y está orientado a eventos.

Diferencia entre servidor web y servidor dedicado

Al comienzo tocamos este punto brevemente. Ya sabemos qué es un servidor web, y que su tarea es la de despachar contenido a los usuarios que lo soliciten por medio del navegador.

El servidor web es un software que corre en un servidor, pero no debe ser confundido con el server en sí.

Un servidor (que puede ser un servidor dedicado o un Cloud VPS por ejemplo), es un sistema que está orientado al alojamiento de aplicaciones web, páginas web y bases de datos.

Se trata del sistema en el cual se corre el software del server web, y por supuesto está basado en hardware, después de todo un servidor en realidad no es nada más y nada menos que una computadora, solo que su uso tiene una orientación muy distinta en comparación con las computadoras que se suelen usar en casa.

Los servers dedicados en particular, son equipos utilizados para el alojamiento de sitios y aplicaciones web, así como para servidor de bases de datos y otros tipos de contenido.

Cuentan con los componentes de hardware tradicionales de una computadora, como un CPU, memoria RAM, unidades de almacenamiento, etc.

Corren con un sistema operativo orientado a servidores, como puede ser por ejemplo CentOS, Ubuntu, Windows Server, etc., y dentro de dicho entorno se encuentra el aplicativo que conocemos como servidor web, ya sea Apache, Nginx u otro.

¿Qué es un servidor web local?

Un servidor web local es, como su nombre indica, un servidor web que se encuentra en una red local. ¿A qué nos referimos con esto?

Ya hemos visto que normalmente un servidor web es parte de un server dedicado (o de un servidor privado -VPS-), sin embargo este tipo de app no está estrictamente reservado para servidores que estén dentro de la infraestructura de una empresa de hosting.

En otras palabras: en tu propio equipo hogareño tú también puedes tener un servidor web local o casero. De hecho la mayoría de los desarrolladores tienen montado en su entorno local un webserver, donde hacen pruebas con los sitios y aplicaciones que van desarrollando antes de subirlos a producción.

Un servidor web local puede ser exclusivo del equipo en el cual se encuentra instalado o bien puede formar parte de una red de computadoras conectadas mediante una red privada local.

Existen diversos paquetes de aplicaciones que permiten montar un servidor web local rápidamente y además incluyen extras como un motor de bases de datos y PHP.

En entornos Linux esto se conoce como LAMP (Linux, Apache, MySQL, PHP), en Windows es llamado WAMP y en Mac recibe el nombre de MAMP.

También hay variables con otro servidor web en lugar de Apache, como es el caso de LEMP (Linux, Nginx, MySQL, PHP; recordemos que Nginx es pronunciado «Engine-X» -el famoso software de Igor Sysoev– de ahí la «E» de LEMP).

¿Qué es un servidor proxy inverso?

Los servers que se configuran como proxy inverso (con o sin cache), arquitectura de balanceo proxy inversa son un tipo de configuración típica de HTTP moderno que ofrecen Nginx o Haproxy (aunque Apache también lo ofrece, no es muy popular en ello).

Un proxy inverso se configura para procesar  solicitudes entre el cliente y el server HTTP. Así, cuando el cliente hace una solicitud o petición hacia una aplicación web, es el proxy inverso  servidor que actúa como proxy inverso se sitúa en el medio del enlace entre el browser y el servidor web. Cuando el cliente realiza una petición,  y hace una conexión, en vez de llegar directo al server HTTP, llega al proxy, y luego finalmente pasa al server que está en el backend y que despacha la solicitud.

Generalmente los servidores proxy actúan y son configurados para hacer balanceo de carga ofrecen una ventaja sobre un server HTTP normal, pues permiten manejar mejor la conexión entrante, y decidir en base a la carga qué hacer con la solicitud, dependiendo si va hacia un archivo estático o una aplicación o contenido dinámico, del consumo de recursos, cantidad de procesos, entre otras cosas.

Dependiendo del proyecto que se maneje, de la cantidad de visitas simultáneas (genearlmente cuando hay miles de ellas) y de la carga que se quiera soportar, es si el proyecto (web, app progresiva o WordPress, entre otros) amerita el uso de tal configuración, es algo que generalmente define la persona encargada de la arquitectura IT de las empresas.

Instalación de servidor HTTP

Existen diversas formas de instalar un servidor web, todo depende del sistema operativo que uses en tu equipo informático. Ahora vamos a ver las formas más tradicionales de hacerlo para los cuatro: entornos donde más se usa (CentOS, Fedora, Ubuntu y MacOS).

CentOS

Ingresa como usuario a la terminal del servidor.
Luego, procedemos a actualizar el sistema con Yum:

sudo yum update

Instalamos el servidor web Apache

sudo yum install httpd

Agregamos el servicio httpd al inicio del sistema:

chkconfig httpd on

Si necesitas configurar Apache, el archivo principal de configuración está localizado en:

/etc/httpd/conf/httpd.conf

Y con estos comandos básicos podrás manejarlo, es decir, iniciarlo, detener o reiniciarlo:

service httpd start
service httpd stop
service httpd restart

Fedora

Fedora es un clon de CentOS en cuanto a funcionalidades, aunque incluye prestaciones y software más nuevo. Permite entre otras cosas instalar grupos de aplicaciones, algo que nos facilitará tremendamente instalar apache en Fedora.

Abre la terminal como usuario normal y luego ingresa:

su -c 'dnf group install "Web Server"'

Eso instalará toda la suite relacionada a Apache, con otros paquetes quie se usan comunmente.

Aunque si sólo quieres instalar Apache quizás lo mejor sería que uses esta línea:

su -c 'dnf install httpd'

Fedora viene con firewalld que necesita configurarse para que el puerto 80 permita conexiones.
Abre la consola de comandos y luego ingresa:

su -c 'firewall-cmd --add-service=http --add-service=https --permanent'
su -c 'firewall-cmd --reload'
su -c 'firewall-cmd --add-service=http --add-service=https'

Ubuntu

La instalación en Ubuntu es sumamente sencilla, pero en lugar de usar Yum o dnf, usaremos apt-get, el gestor de paquetes de esta popular distro Linux.

Abre la terminal e ingresa:

sudo apt-get update
sudo apt-get install apache2

Vamos a configurar el firewall ahora para permitir el tráfico completo hacia y desde Apache.
Para eso desde la terminal ingresa:

sudo ufw allow 'Apache Full'

También podrás verificar el estado de Apache usando este comando:

sudo systemctl status apache2

Puedes configurarlo a tu gusto desde /etc/apache2/apache2.conf

MacOS

MacOS es la plataforma elegida por muchos desarrolladores web a la hora de montar un servidor web local, por ello vamos a ver cómo instalar apache en MacOS.
Necesitarás acceso a la terminal y el gestor de paquetes Homebrew.

Abre la terminal y corre estos comandos para remover cualquier otra instalación previa:

sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Ahora instalamos la última y nueva versión usando Homebrew:

brew install httpd

Luego de que termine el proceso, se configura el auto-inicio en el S.O:

sudo brew services start httpd

Todo listo, Apache está ahora instalado en tu MacOS

Puedes configurarlo desde /usr/local/etc/httpd/httpd.conf

Conclusión

Como hemos visto se puede escribir mucho sobre servidores web, en esta oportunidad nos hemos enfocado en varios puntos como lo es el concepto de servidor web y su utilidad, sus principales características, además vimos cuáles son los más utilizados así como los lenguajes de programación más comunes con los que son compatibles, y por supuesto hemos aprendido sobre qué son los servidores web locales y también a diferenciar un servidor dedicado de un servidor web.

Ahora seguro conoces mejor el concepto de servidor web y para qué se utilizan en Internet.

Artículos relacionados