Estoy escuchandote, dime que quieres buscar
HTTP3: La evolución de la web

HTTP3: La evolución de la web

¿Es Http3 el futuro de la web? ¿Estamos ante la evolución de Internet tal y como lo conocemos? ¿Qué ventajas nos aporta? y... ¿cómo se puede empezar a usar ahora mismo?

Ivan Gil
Ivan Gil
10 minutos de lectura

Bienvenidos a una nueva entrega de Como configurar tu propio VPS desde 0 y en español.

En este capítulo independiente no sólo voy a explicar que es QUIC o mejor dicho Http3, si no que vamos a ver sus ventajas, porqué es el futuro y lo más importante.... Voy a explicar cómo se instala junto a Nginx en el servidor para usarlo en producción.

¿Qué es Http3?

Http3 es la última versión del protocolo HTTP (Hypertext Transfer Protocol) que se utiliza en la World Wide Web (ya sabéis, eso de www que está delante de muchos sitios web). Es la evolución natural de Http2 y se basa en QUIC (Quick UDP Internet Connections), un protocolo de transporte de Internet diseñado por Google para mejorar la velocidad y la seguridad de las conexiones de los sitios web.

En 2015 y de forma totalmente invisible para el usuario, se lanzó el nuevo protocolo Http2, que era una mejora respecto al Http1.1 lanzado en 1999.

Con tantos años de diferencia y al ritmo que avanza todo... Imagina. Http2 es capaz de comprimir los datos, enviar los datos por orden de importancia, enviar datos antes de que hagan falta, abrir múltiples conexiones TPC cifradas y un montón de cosas más que lo hacen mil veces más eficiente que su antecesor.

Http3 sin embargo utiliza UDP en lugar de TCP como protocolo de transporte* lo que permite una mejor optimización de los recursos y un rendimiento mucho más rápido.

*Internet se divide en capas como si fuesen carreteras y simplificando mucho, dos formas de viajar por ellas son TPC y UDP, con TPC sería como viajar con un menor, debes llevarle a casa seguro y confirmar que ha llegado bien y a salvo. Con UDP podemos ser un poco más salvajes, aunque vamos seguros (conexión cifrada) porque hay normas, no tenemos que confirmar que ha llegado bien a nadie.

Además de los beneficios de velocidad, Http3 también mejora la seguridad y la fiabilidad. El uso de UDP permite la creación de conexiones más seguras y resistentes a las interrupciones en comparación con las conexiones TCP tradicionales. Para que se entienda el salto generacional diría que es lo mismo que si pasamos de usar walkie talkie a llamar de un smartphone a otro.

¿Cómo cambiará la forma en que navegamos por la web?

De entrada, me imagino fácilmente un escenario. Como diseñador web, a mayor velocidad mayor creatividad. Me explico.

Cuando diseño sitios web, siempre le digo al cliente que al final, su sitio web o aplicación, va a estar limitada por dos conceptos:

  • El presupuesto que tenga.
  • Las locuras que quiera pedir.

¿Se puede hacer esto? o ¿Esto otro? Mi respuesta siempre es SI, el diseño web no tiene límites (y quien diga lo contrario, o está mintiendo o no es lo suficientemente bueno), pero a mayor complejidad, mayor tiempo y presupuesto. Si es algo demasiado complejo o que requiere de muchos recursos, nos toca bajar al cliente de las nubes y explicarle que... necesitará más optimización, mayor gasto en servidores, mayor tiempo de diseño y programación, balanceadores de carga, etc.. así que sobre esta premisa muchas veces se simplifican los diseños web para ofrecer al usuario una experiencia más fluida y abaratar tiempo/costes.

Que nos permite Http3?¿? Si los sitios webs pueden cargar antes, podemos incluir más recursos y dar mayor rienda suelta a nuestras ideas. Por ejemplo, yo estoy medio obsesionado con la librería de 3D en Javascript three.js, aquí os dejo unos ejemplos de sitios web creados con esta maravilla:

Unseen Studio® – Brand, Digital & Motion
We’re Unseen Studio, a world-class creative production agency. We help brands transform by blending meaningful branding, compelling digital experiences and motion productions. Design Studio of the Year – Awwwards.
Junni is...
アイデアとテクノロジーで、世界をもっとハッピーでワクワクしたものに。ジュニのものづくりの理想を少し、覗いてみませんか?
Madbox - Home
We are game makers who create experience for millions of players
Shout against violence
“SHOUT: live this immersive and interactive experience and shout with us to end violence against women.”

Estos sitios utilizan el 3D para crear experiencias más inmersivas y aunque son posibles ahora mismo, la llegada del nuevo protocolo HTTP3 facilitará la eliminación de las barreras creativas frente al uso de recursos.

¿Por qué Http3 reemplazó a QUIC?

En 2012 Google comenzó un protocolo experimental llamado Quick UDP Internet Connections para mejorar la velocidad y seguridad de los datos en internet.

Si recordáis párrafos anteriores, Http2 se lanzó en 2015, lo cual quiere decir que QUIC empezó a desarrollarse antes incluso que Http2.

La IETF (Internet Engineering Task Force) adoptó QUIC y lo convirtió en un estándar oficial que se llamaría "QUIC version 1" sin embargo, durante el proceso de estandarización, se decidió que QUIC debería ser incorporado dentro del protocolo HTTP, lo que llevó al desarrollo de HTTP/3, que es la versión de HTTP que utiliza QUIC como su protocolo de transporte subyacente.

Así que Http3 no remplazó a QUIC si no que es una evolución del protocolo QUIC que aprovecha sus mejoras en la velocidad y la seguridad de la transferencia de datos en internet.

Importancia de Http3 en la web moderna

Hay dos cosas que definen a la Internet moderna. Velocidad y seguridad.

¿Las tenemos? No siempre. ¿Nos preocupan? Siempre.

HTTP/3 utiliza el cifrado de extremo a extremo, lo que significa que toda la información que se transmite está encriptada y protegida de posibles amenazas y ataques cibernéticos. Esto mejora significativamente la seguridad de la navegación por la web. No la hace impenetrable, pero si es una mejora significativa de lo que ahora tenemos.

En general, HTTP/3 cambiará la forma en que navegamos por la web al mejorar la velocidad y la seguridad de la conexión entre los servidores y los navegadores de los usuarios, lo que resultará en una experiencia de navegación más rápida, segura y eficiente.

Cómo instalar Http3 en un VPS con Nginx

Antes de empezar debo aclararte que Http3 todavía no forma parte de la rama principal de nginx por lo que para instalarlo deberemos usar una rama en desarrollo.

Esto solamente significa que no está recomendada para producción porque puede contener errores o pueden modificarse/eliminarse ciertos parámetros sin aviso en siguientes versiones por lo que no se considera estable.

Requisitos previos

Lo primero de todo es tener un servidor o VPS operativo y funcionando y con acceso como administrador. Si tienes un servidor, pero no sabes cómo ponerlo a funcionar, te recomiendo empezar con mi guía: Configurar un Servidor desde 0 y en español

Otro requisito es que estes utilizando un servidor Linux con Ubuntu 22.04 (amd64, arm64) o RHEL 9 y derivados (amd64, arm64).

💡
Este apartado describe como instalar Nginx con soporte para Http3 en base a unos binarios ya construidos (lanzados en Febrero de 2023), si no tienes RHEL 9, ni un derivado, ni tampoco Ubuntu o tienes una versión anterior no te preocupes porque se pueden construir los binarios (nosotros lo hemos hecho desde hace un par de años con esta web) y si Nginx funciona en tu sistema operativo podrás usar el sistema que prefieras.
🚨
Si te interesa construir tus propios binarios con Nginx déjame un comentario debajo y me encargaré de escribir un nuevo artículo explicándolo o te lo explico sin problemas!

En resumen, necesitas:

  • Acceso de administrador al servidor
  • Un servidor VPS con sistema operativo Ubuntu 22.04 o RHEL9 y derivados
  • Puertos UDP abiertos en el firewall del servidor

Preparando la instalación

Los paquetes nginx-quic no se pueden instalar junto con los paquetes nginx o nginx-plus hasta que no salga una versión definitiva.

El primer paso será hacer una copia de seguridad de los archivos de configuración antes de instalar nginx-quic:

`$ sudo cp -a /etc/nginx /etc/nginx-quic-backup

Instalación de Nginx en RHEL 9 y herramientas adicionales

$ sudo cp -a /etc/nginx /etc/nginx-quic-backup

Lo siguiente será instalar las herramientas necesarias:
$ sudo dnf install yum-utils

Ahora deberemos crear un archivo llamado /etc/yum.repos.d/nginx-quic.repo y este archivo debe contener lo siguiente:

[nginx-quic]

name=nginx-quic repo
baseurl=https://packages.nginx.org/nginx-quic/rhel/9/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

Ahora sólo nos queda instalar nginx con QUIC para utilizar http3:

sudo dnf install nginx-quic

🚨
Se te solicitará aceptar la clave GPG, simplemente comprueba que la huella digital coincide con 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 y si es así, acepta.

Instalación de Nginx en Ubuntu 22.04 y herramientas previas

EN ubuntu instalaremos primero las dependencias necesarias:

$ sudo apt update && sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

Luego usaremos el siguiente comando:

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

De esta forma obtendremos una una clave de firma oficial de nginx para que apt pueda verificar la autenticidad de los paquetes.

Ahora configuraremos el repositorio apt para que utilice los paquetes de nginx-quic:

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
  https://packages.nginx.org/nginx-quic/ubuntu `lsb_release -cs` nginx-quic" \
  | sudo tee /etc/apt/sources.list.d/nginx-quic.list

Y ya por último sólo faltará instalar nginx-quic:

$ sudo apt update

$ sudo apt install nginx-quic

Configuración de Nginx para usar Http3

Depende de donde lo tengas instalado y como lo hayas configurado pero lo habitual ahora será entrar en el archivo de configuración de tu web y añadirle los parámetros de configuración http3.

Por ejemplo, si mi sitio es pepitoellisto.com y contando que el editor es nano yo usaría algo así sudo nano /etc/nginx/sites-availables/pepitoellisto.com.conf

Entonces en la parte que pone

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

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

        server_name pepitoellisto.com www.pepitoellisto.com;

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

Añadimos la configuración:

server {
    listen 443 http3 reuseport;
    listen 443 ssl;
    
    server_name pepitoellisto.com www.pepitoellisto.com;

    ssl_certificate     certs/example.com.crt;
    ssl_certificate_key certs/example.com.key;
    ssl_protocols       TLSv1.3;

    location / {
        add_header Alt-Svc 'h3=":$server_port"; ma=86400';
                
        #proxy_pass <upstream_group>; 
        #root       /<root_directory>; 
    }
}

La verdad es que la configuración de arriba es la de la especificación y es una 💩 y cómo explicar una configuración buena de Nginx a fondo nos llevará otro artículo dejo aquí un enlace al generador de configuraciones de Nginx de Digital Ocean, que la verdad es que si no sabes de que va el tema es una maravilla:

NGINXConfig | DigitalOcean
The easiest way to configure a performant, secure, and stable nginx server.

Http3 en la vida real

Comparación con Http2 y Http1.x

Una imagen vale más que mil palabras, así que imaginate un vídeo donde ves la comparativa en tiempo real😎 y si no tienes ganas de verlo, debajo he puesto también una imagen representativa.

Http 1.1 vs Http 2

Http3 actualmente

Para que Http3 funcione debe estar activado tanto en el servidor como en el navegador. Actualmente la mayoría de los navegadores modernos ya lo soportan (Microsoft Edge, Chromium, Firefox, Opera y Chrome) y en cuanto a sitios/servidores... Facebook, Microsoft, Google, omniscientia.es e incluso mi web personal ivangil.es ya lo incorporan desde hace años.

Si tienes curiosidad por si un sitio usa o no el nuevo protocolo experimental Http3 puedes consultarlo con estas dos herramientas:

HTTP/3 Check
Is my site using HTTP3? Check HTTP3 service on any URL. Test QUIC service, too.
Check if HTTP/3 is enabled - Geekflare Tools
Find out if your site supports the latest H3 protocol for better performance. Geekflare H3 tool use cURL for the testing

Perspectivas futuras de Http3 en la web

Visión catastrófica de ciudad del futuro cableada y sin gente en sus calles.

Actualmente estamos ante el surgimiento de las IA, no es un tema nuevo, pero si es un tema que se acaba de poner de moda. ChatGPT4 y otras IA van a provocar un salto generacional o de mentalidad muy significativo y que usemos el mismo internet que en 2015 en el mejor de los casos... o incluso de 1999 para los sitios que no utilizan http2 aún.... pues no ayuda. Que un nuevo protocolo llegue a Internet es algo muy necesario.

Es importante no dejar obsoleta algo como la web e implementar nuevas medidas para hacerla más segura, confiable, estable y rápida. Se entiende que algo como un nuevo protocolo de internet donde "todo" se mueve, debe analizarse con detalle, pero que necesita ser actualizado es una realidad y lo esperamos con los brazos abiertos.

Esperemos que Http3 facilite la eliminación de las barreras de la creatividad que a veces nos autoimponemos los diseñadores/programadores y junto a las IA ayuden a crear un internet diferente, con más color, creatividad y cambios.

Fuente: https://www.nginx.com/blog/our-roadmap-quic-http-3-support-nginx/

Normas de la comunidad