Servidores Web, tipos y sus características

Juan Carlos G 2020-01-03
Servidores Web, tipos y sus características

Servidores Web HTTP

Hoy tocaré el tema de Servidores WEB, lo cual es un tema muy importante si eres desarrollador o un emprendedor y requieres una página web para tu negocio. Conocer y comprender ¿Qué es un servidor Web HTTP? te ayudará a elegir cual es la mejor opción al momento de adquirir un servicio de Hosting para tu proyecto, desarrollo o emprendimiento, si al final crees que te ha sido útil ayúdame compartiendo y suscríbete a mi canal de YouTube donde aprenderás mucho sobre temas de desarrollo.

 

📌 Suscríbete a mi canal y activa la campanita para que no te pierdas ningún video 🤘

 

Bien, para ir paso a paso lo primero que haré es dejarte un definición de servidor web para que vayamos entrando en calor.

 

¿Qué es un servidor Web?

Un servidor web o también llamado servidor HTTP, es un software dedicado que atiende y ejecuta aplicaciones del lado del servidor, es capaz de aceptar conexiones de uno o varios clientes de forma unidireccionales, bidireccionales, asíncronas o asíncronas, retornando una respuesta HTTP con la información que se le ha solicitado.

 

Ha sido una definición bastante larga pero creo que abarca los aspectos mas importantes que debe o presenta este tipo de servidor, ahora vayamos a ver como funcionan y tratare de ser muy claro sin tantos tecnicismos.

 

¿Cómo funciona un servidor WEB HTTP?

Vayamos revisando cada aspecto para comprender de la mejor manera como es que funciona un servidor web y que de partes esta conformado.

 

Características de un servidor Web

 

1. Hosting y servidor web local

Lo primero que veremos es que para poder tener un servidor HTTP en funcionamiento, requerimos de una computadora u ordenador al cual se le llama Hosting. Este Hosting debe estar siempre encendido y con un buen acceso a Internet para que los clientes que se van a conectar a el siempre lo encuentren disponible.

Aunque, si tu lo que necesitas es un servidor Web para realizar tus practicas, puedes montar un servidor web en tu computadora a lo que llamaremos servidor web local y así realizar tus proyectos y desarrollos sin la necesidad de gastar un solo peso, aquí tienes un ejemplo de como hacerlos con XAMPP(Instala XAMPP en tu computadora).

 

2. Servidores web más utilizados

Ahora que ya entendimos que lo primero que se requiere es un hosting ya sea local o comprar uno en la Nube. Lo que realmente crea un servicio HTTP es un software que permita atender las solicitudes de los clientes en los diferentes protocolos disponibles y nos permita levantar un servidor web para alojar nuestras páginas y demás servicios que necesitemos.

Los software disponibles hoy en día para crear un servidor web son los siguientes:

  • Nginx, este software es preferido por los desarrolladores que trabajan en Node JS, aunque también funciona muy con lenguajes como PHP, incluso WordPress corre muy rápido y sin problema en Nginx. Este software es multiplataforma.
  • Apache el servidor web por excelencia, es uno de los software mas utilizados en producción en el mundo, ya que prácticamente todas las páginas web que están hechas en WordPress son interpretadas por un servicio de Apache, aunque técnicamente Nginx proporciona mejor rendimiento Apache no deja de ser una excelente opción y la vieja confiable que nunca nos falla. Este software es multiplataforma también.
  • Internet Information Services (IIS), este software es propiedad de Microsoft y se ejecuta únicamente en sistemas operativos de Windows, es usado principalmente para páginas web hechas en .NET ya que es capaz de interpretar lenguajes como C# o VB, aunque, también puedes corres aplicaciones hechas en React JS o cualquier otra tecnología que sea capaz de crear ficheros JavaScript, CSS y HTML, es decir, que generen los archivos del Front End.
  • Tomcat, este software es principalmente usado para los que trabajan en Java y es excelente como contenedor de servlets, yo recuerdo que es muy bueno aunque hace ya varios años que no lo he utilizado ya que no he desarrollado en Java últimamente.
  • Cherokee, Lighttpd, Thttpd, estos tres últimos software se que existen pero realmente no los he utilizado, lo único que se es que Lighttpd y Thttpd son muy rápidos.

 

3. Tipos de Protocolo

Bien, ahora toca hablar de los diferentes protocolos a los que se tiene acceso cuando levantamos un servidor web y según sea el caso necesitaremos activar o desactivar algunos protocolos para que nuestra aplicación o página web funcione correctamente, así que repasemos cuales son estos protocolos.

  • Protocolo HTTP, tengo todo un Post donde te hablo sobre ¿Qué es el protocolo HTTP?, pero en resumen, es el protocolo de Transferencia de Hipertexto y es aquel que establece las normas de comunicación entre un servidor y los clientes durante la transferencia de información. Por lo regular, un usuario se accede a nuestra página web a través de un navegador como Chrome y nuestro servidor responde con el HTML y demás Script que permiten a nuestros usuarios visualizar nuestra página correctamente.
  • Protocolo SMTP, de igual forma tengo un post sobre ¿Qué es el un servidor SMTP? y en resumen este protocolo nos permite enviar correos electrónicos, no es tan común que este activo pero software como Nginx tiene soporte.

Excelente, ahora ya sabes las características básicas de un servidor web, las cuales podemos resumir en:

  • Hosting
  • Software para crear el servidor
  • Protocolo

Estas 3 características es lo que hace funcionar nuestro servidor web cuando este atiende la solicitud de los clientes.

 

Ejemplo del funcionamiento de nuestro servidor web

Bien, el ejemplo más claro es lo que acabas de hacer al ingresar a este Post:

  • En la barra de direcciones de tu navegador realizaste una búsqueda y diste clic en el resultado que te llevo aquí, al final es como si hubieras ingresado ewebik.com en la barra de búsqueda.
  • Esto hizo que el navegador hiciera una solicitud a mi servidor a través del protocolo HTTP el cual respondió con el HTML y archivos JavaScript y CSS necesarios para que puedas ver la página en tu computadora.
  • Pero antes de responder estos archivos, mi servidor hizo un par de procesos internos, lo cual es la lógica que he programado para que la información llegue a tu navegador sin ningún problema.

Bien, creo que ya has notado que todo esto nos lleva a que existe dos acciones una que ocurre del lado del servidor y otra del lado de tu navegador esto es conocido como Back End y Front End respectivamente y es de lo que hablaremos a continuación.

 

Aplicaciones de Back End y Front End

Durante el intercambio de información entre un cliente y nuestro servidor se ejecutan ciertos procesos para que nuestra aplicación o página web funcione, esto es conocido como:

  • Aplicaciones del lado del cliente o Front End
  • Y aplicaciones del lado del servidor o Back End

 

Aplicaciones del lado de servidor

Es todo lo que se ejecuta del lado de nuestro servidor al cual los usuario no tienen ni deben de tener acceso por seguridad, estos procesos son la lógica que recibe las solicitudes y realizan acciones como la conexión a una base de datos, envió de correos electrónicos o procesos y algoritmos complejos que finalmente sirven el código HTML y Script de la página web. Dentro de los lenguajes mas populares del lado del servidor se tienen:

  • PHP
  • C#
  • Visual Basic (VB)
  • Perl
  • Python
  • Ruby
  • Node JS
  • Java

 

Aplicaciones del lado del cliente

Esto hace referencia a todo lo que es ejecutado del lado de tu navegador, por ejemplo, en esta página hay un botón de Cookies el cual al dar clic desaparece, esa programación corre en tu computadora, esto se lleva acabo a través de:

  • HTML
  • JavaScript
  • CSS

 

En este vídeo puedes ver claramente como crear una página web desde cero la segunda parte esta en mi post Creando rutas desde Webpack y como funciono la parte del Front y Back te recomiendo que lo veas ya que también tengo el código disponible para que lo descargues.

 

 

Diferencia entre un servidor web compartido y uno dedicado

Cuando compres un servicio de Hosting te vas a topar con varias opciones, las mas comunes que existen para alojar páginas web son los Hosting dedicados o compartidos y creo que es mas que obvio su funcionamiento y diferencia, aun así y para que no haya duda.

La diferencia entre un Hosting compartido y uno dedicado es que en el compartido se divide el servidor con otras personas y cada quien desplega su web, el detalle es que todos los recursos se reparten entre las webs que están en ejecución, la ventaja es que suele ser más barato y cuentas con herramientas para su administración básica.

En uno dedicado que pudieran ser los servidores VPS, tu alquilas una máquina virtual en donde no compartes IP esto quiere decir que no hay más webs que corren en ese hosting, esto tiene muchas ventajas ya que no compartes recursos con otras web y tienes el control total y administración de tu servidor, la desventaja es que requieres de conocimientos más técnicos.

 

Creando un servidor web

Bien, ahora pasemos un poco a la práctica y veamos como podemos levantar un servidor HTTP para nuestras páginas web, si tu no eres muy técnico y contrataste un Hosting compartido seguramente la compañía hará todo esto por ti, ahora si no es el caso, espero esto te ayude.

Si eres desarrollador, con esto podrás realizar tu pruebas y levantar tu página en producción ya que veremos un par de casos, por ejemplo.

 

Creando un servidor Web local con XAMPP

Como te mencione anterior mente tengo todo un Post hablando de esto, pero he decidido dejarte aquí todo el vídeo, XAMPP es muy bueno si deseas trabajar en local y hacer páginas en PHP o WordPress.

 

 

Creando un servidor web con Nginx

Ahora nos pondremos un poco mas técnicos y dado que seguramente en producción tendrás un servidor Linux ya que suelen ser mas baratos, haremos esta práctica como si estuviéramos en la terminal de comandos, en Windows es mas fácil, vas al sitio oficial de Nginx y obtienes el instaldor.

 

1. Lo primero que debemos hacer es instalar Nginx, en este punto asumo que ya has preparado tu servidor y cuenta con la seguridad y complementos que necesita tu proyecto, en fin, continuemos...

 

sudo apt update
sudo apt install nginx

Con esto se instala Nginx y todas las dependencias que necesita tu servidor

 

2. Ahora solo debes configurar el Firewall para que haya salida a Internet

 

sudo ufw app list

Con el comando anterior te muestra un lista de lo que actualmente tu Firewall tiene activo, por ejemplo, Nginx requiere:

  • Nginx Full, esto nos permite abrir el puerto 80 (para permitir el tráfico web normal, no cifrado) y  el puerto 443 tráfico web TLS/SSL cifrado Aquí tengo como puedes instar un certificado SSL gratis.
  • Nginx HTTP, esta opción solamente abre el puerto 80
  • Nginx HTTPS, al igual que el anterior solamente abre el puerto 443

Lo anterior lo podemos representar en 3 comandos, por ejemplo:

sudo ufw allow 'Nginx HTTP'

 

sudo ufw allow 'Nginx HTTPS'

 

Yo recomiendo esta tercera opción y que activas tanto el puerto 80 y 443 con lo cual al agregar un certificado SSL no tendrás ningún problema, ademas es el que ocupo yo.

 

sudo ufw allow 'Nginx FULL'

 

Si vuelves a revisar la lista veras algo así, dependiendo de la opción que hayas elegido

 

sudo ufw app list

Output

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

 

3. Ahora, solo debes verificar que tu Firewall este activo

 

sudo ufw status

 

Lo cual regresa algo como esto

 

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

 

Si tu Firewall no esta activo puedes activarlo con, ¡¡PERO!! No lo actives hasta estar seguro de que tu acceso SSH este bien configurado y no vayas a perder acceso a tu terminal, esto es importante para que no tengas ningún problema con el acceso a tu servidor ya que una vez activo lo que no este configurado en su reglas será bloqueado.

 

sudo ufw enable

 

4. Verifica que Nginx esta corriendo

 

systemctl status nginx

Deberías ver algo como esto

 

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

 

Ahora puedes ir al navegador y con la IP de tu servidor o localhost si estas en local puedes ver la página que viene por default

 

Página default Nginx

Bien en este punto ya tienes un sevidor web arriba, es totalmente funcional y puedes agregar bloques donde podrás dar de alta todas las páginas que necesitas, si te suscríbes a mi canal de YouTube EWebik me ayudarás para seguir creando contenido y te enseñare mas sobre Nginx.

Por el momento, te enseñare como puedes crear un bloque o agregar mas bien un bloque para que levantes una página web, el ejemplo mas básico es el siguiente

 

http {
   server {
        listen 80;
        listen [::]:80;

        root /var/www/ewebik.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name ewebik.com www.ewebik.com;

        location / {
                try_files $uri $uri/ =404;
        }
    }
{

 

Todo bloque debe estar dentro de http, puedes separarlo en varios archivos o en un solo archivo, pero lo importante es lo siguiente:

 

  • listen 80, indica que escuchara las conexiones por el puerto 80 el cual es el puerto por el que se comunican los navegadores sin cifrar la comunicación
  • root, es la ruta donde esta alojada tu página web en el disco duro
  • index index.html index.htm index.nginx-debian.html, estos son los archivos que Nginx buscara en la carpeta
  • server_name, es donde estableces el dominio que resolvera Nginx, si agregas mas bloques cada bloque debe resolver a un dominio, esto es importante para que no vayas a duplicar todo un sitio web y to SEO y posicionamiento se arruine.
  • lacation, es un poco mas complicado pero se establecen reglas e incluso rutas donde Nginx buscara datos o agregar información a la cabecera Http

 

Bien, hasta aquí dejaremos este Post creo que ya tienes suficiente información y has descubierto como es que se levanta un servidor Web, si tienes dudas puedes escribirme, comentarme en mis vídeos en YouTube.

 


EWebik.com

Juan Carlos G

Electrónica y diseño web


Durante años he desarrollado plataformas dedicadas al rastreo satelital y varios sitios web que se encuentran en la primera página de Google, y hoy quiero compartir contigo lo que se en tecnologías como Node JS, PHP, C# y Bases de datos, si quieres apoyarme sígueme en mis redes sociales y suscríbete a mi canal de YouTube.

@Puedes seguirme en mis redes

📌 Suscríbete 🤘