EQProxy Load balancer y reverse proxy en Rust

EQProxy 0.9.1 — proxy inverso y balanceador de carga

EQProxy es un proxy inverso y balanceador de carga escrito en Rust que importa la configuración que ya tienes (nginx, HAProxy, ingress-nginx, Envoy), la traduce a un único eqproxy.toml y clasifica cada directiva del origen como convertida, a revisar o rechazada.

Estado: v0.9.1, pre-1.0. No se declara listo para producción y todavía no tiene usuarios fuera del autor: pruébalo primero sobre una configuración de staging.

Qué es y para qué se usa

Su caso de uso es la sustitución de un proxy existente sin reescribir la configuración a mano. eqproxy config import lee el fichero del proxy de origen, escribe el eqproxy.toml equivalente y genera un informe que nombra cada directiva que no se ha podido traducir. La regla del proyecto es explícita: una traducción a medias en silencio es peor que un rechazo.

El resultado es un único binario estático (Linux, musl) que termina TLS, enruta por host, ruta, método, cabecera, cookie, IP y mapas de datos, balancea entre servidores con pesos, comprueba su salud y se recarga en caliente sin reiniciar el proceso.

Arquitectura

El producto son cuatro crates: eqproxy-core (métricas, motor de reglas, apagado), eqproxy-config (parser TOML tipado, validación semántica, conversores), eqproxy-net (dataplane: listeners, TLS, salud, caché, plano de administración) y eqproxy-cli (el binario eqproxy). La pila de red es tokio + rustls, un parser de HTTP/1.1 propio y estricto, la crate h2 para HTTP/2 y quinn + h3 para HTTP/3; no hay hyper, de modo que el dataplane reenvía exactamente los bytes que validó y rechaza cualquier framing con dos lecturas posibles (ADR-0036). Todo el código es Rust seguro: forbid(unsafe_code) en la raíz de cada crate.

La configuración se parsea, se valida y se resuelve —certificados, direcciones, balanceo— antes de que el dataplane la adopte, y el cambio se aplica como un snapshot atómico: no hay proceso maestro ni plano de control. Un único escritor serializa las recargas por SIGHUP y las escrituras de la API de administración; el plano de administración vive en su propio socket y su propia tarea, así que el dataplane sigue sirviendo aunque ese plano esté caído o no se haya configurado.

Características principales

Instalación en cinco líneas

curl -sSLO https://github.com/EQProxy/EQProxy/releases/download/v0.9.1/eqproxy-linux-amd64
curl -sSLO https://github.com/EQProxy/EQProxy/releases/download/v0.9.1/SHA256SUMS.txt
shasum -a 256 -c SHA256SUMS.txt --ignore-missing
chmod +x eqproxy-linux-amd64
./eqproxy-linux-amd64 --version

La imagen Docker equivalente es ghcr.io/exyonq/eqproxy:0.9.1 (mismos digests en exyonq/eqproxy:0.9.1). Detalle en Instalación.

Documentación

PáginaContenido
InstalaciónBinarios, compilación, imágenes Docker, requisitos, primer arranque y validación
ConfiguraciónReferencia de eqproxy.toml sección a sección, con defectos y ejemplos
ConversoresQué se convierte y qué no desde nginx, HAProxy, ingress-nginx y Envoy
API de administraciónEndpoints, roles, auditoría y ejemplos con curl
OperaciónSalud, métricas, recarga en caliente, logs, señales y checklist
ParidadMatriz de 120 filas, lagunas conocidas y cómo se genera la evidencia
EjemplosRecetario: TLS, least-conn, límites, caché, rate limit y Docker Compose

EQProxy no anuncia compatibilidad: anuncia casos demostrados. La matriz de paridad clasifica las 120 filas de referencia y la evidencia se publica con cada número.