Reverse proxy mínimo en Rust: enrutar tráfico por Host
Publiqué un nuevo tutorial en TuCodigoCotidiano donde construimos un reverse proxy mínimo en Rust usando únicamente la librería estándar.
La idea del tutorial es simple, pero poderosa:
Un reverse proxy no solo reenvía tráfico: también decide a dónde debe ir.
En el proyecto, el proxy escucha en:
127.0.0.1:8080
Y enruta cada petición según el header Host:
app.localhost -> 127.0.0.1:9001
api.localhost -> 127.0.0.1:9002
Qué vas a aprender
En el tutorial construimos paso a paso un proxy que:
- escucha conexiones TCP con
TcpListener; - lee peticiones HTTP desde un
TcpStream; - extrae y normaliza el header
Host; - decide el upstream correcto;
- reescribe headers como
Host,Connection,X-Forwarded-ForyX-Forwarded-Proto; - responde
400 Bad Requestcuando faltaHost; - responde
404 Not Foundcuando no existe una ruta; - responde
502 Bad Gatewaycuando el upstream está apagado; - maneja varias conexiones usando threads;
- incluye pruebas con
curl.exey tests unitarios.
Por qué hice este tutorial
Muchas veces usamos herramientas como NGINX, Caddy, Traefik o HAProxy, pero no siempre entendemos qué pasa por dentro.
Este proyecto no busca reemplazarlas. La meta es aprender la idea central:
Leer una petición, entender a qué servicio va dirigida y reenviarla al destino correcto.
Tutorial completo
Puedes leerlo aquí:
Si estás aprendiendo Rust, HTTP, backend, redes o DevOps, este proyecto te puede ayudar a conectar teoría con práctica.

Top comments (0)