El ingress que vigila
tu tráfico desde
la altura de un cóndor.
nginx arrastra OpenSSL; Envoy pide un control plane; el resto suma C, GC y CVEs. Condor es un proxy HTTP inverso en Rust puro: un binario estático de ~7 MB, cero dependencias C (TLS con rustls + ring, sin OpenSSL), con HTTPS automático vía ACME, audit log append-only para HIPAA y hot reload sin cortar conexiones. Hecho para entornos regulados donde la residencia de datos y una superficie mínima no se negocian.
Por qué Condor
Menos superficie, más control.
Cero OpenSSL
TLS con rustls + ring; los JWT con RustCrypto puro. Sin libssl, sin C linkeado: toda la clase de CVEs de OpenSSL sale de la superficie.
Un binario, sin sorpresas
~7 MB estáticos para x86_64-unknown-linux-musl, sin dependencias dinámicas. Se copia a la VM y corre. Imagen scratch opcional del mismo tamaño.
HTTPS automático (ACME)
Emisión y renovación de certificados Let's Encrypt vía desafío HTTP-01, con instant-acme sobre ring. SNI multi-dominio con resolver dinámico — los certs entran sin reiniciar.
Audit para cumplimiento
JSONL append-only, una línea por petición (request_id, IP, método, host, status, upstream, latencia, user_id). Rotación diaria, compatible WORM. Pensado para HIPAA / ISO-27001.
Hot reload sin drop
SIGHUP, POST /reload o cambios en el archivo recargan rutas, upstreams, middleware y certificados TLS en caliente con un swap atómico — sin cortar conexiones ni reiniciar (rotación de certs sin downtime).
Resiliencia incluida
Circuit breaker por upstream, health checks activos y outlier detection pasiva per-target: el que acumula 5xx se eyecta solo, con backoff, y se readmite solo. Nunca se eyecta el último target servible.
Gateway, no solo proxy
Auth JWT (JWKS), API key y HTTP Basic (bcrypt), IP ACL con CIDR, rate limiting por IP, redirects, rewrites y headers — por ruta. Y canary releases: traffic splitting ponderado con cutover por hot reload.
Observabilidad nativa
Métricas Prometheus (condor_*: requests, latencia, salud de upstreams, estado del circuito, handshakes TLS) y logs JSON con tracing.
Sin control plane
Toda la config en un YAML legible que un equipo de ops puede versionar y operar. Sin xDS, sin sidecars de configuración, sin daemon aparte.
Config
Todo en un archivo.
Un condor.yaml describe listeners, rutas, upstreams con su
estrategia de balanceo, middleware por ruta y auditoría. Validá sin arrancar
con condor check.
global: max_connections_per_ip: 100 # anti-abuso por IP header_read_timeout_secs: 30 # anti-slowloris request_timeout_secs: 60 # upstream lento → 408 listeners: - addr: "0.0.0.0:443" tls: mode: acme # file | acme | self_signed acme_email: ops@example.com acme_domains: ["api.example.com"] routes: - name: api match_host: api.example.com match_path: /v1/* upstream: app-pool middleware: - type: auth mode: jwt jwks_url: "https://auth.example.com/.well-known/jwks.json" - type: ratelimit requests_per_second: 500 - type: audit upstreams: - name: app-pool strategy: round_robin # round_robin | least_conn | random | ip_hash targets: - addr: "10.0.0.11:8080" - addr: "10.0.0.12:8080" health_check: { path: /health, interval_secs: 5 } circuit_breaker: { failure_threshold: 50, recovery_secs: 30 }
Comparativa
Frente a otros proxies.
| Característica | nginx | Envoy | Caddy | Condor |
|---|---|---|---|---|
| Lenguaje / runtime | C | C++ | Go (GC) | Rust (sin GC) |
| Sin OpenSSL/BoringSSL | ✗ OpenSSL | ✗ BoringSSL | ✓ | ✓ rustls |
| Binario único estático | ✗ | ✗ | ✓ | ✓ ~7 MB |
| HTTPS automático (ACME) | ~ certbot | ✗ | ✓ | ✓ nativo |
| Audit append-only WORM/HIPAA | ~ access log | ~ access log | ~ access log | ✓ JSONL |
| Circuit breaker integrado | ~ Plus | ✓ | ~ plugin | ✓ |
| Traffic splitting / canary | ~ split_clients | ✓ | ~ pesos | ✓ + hot reload |
| Outlier detection per-target | ~ max_fails | ✓ | ~ pasivo | ✓ backoff + guardas |
| WebSocket / Upgrade | ✓ | ✓ | ✓ | ✓ |
| Timeouts + límites de conexión | ✓ | ✓ | ~ básico | ✓ |
| Control de acceso por IP (CIDR) | ✓ | ✓ | ~ plugin | ✓ |
| WAF (firmas SQLi/XSS/…) | ~ ModSecurity | ~ WASM/ext | ~ plugin | ✓ nativo |
| Redirects / rewrites | ✓ | ✓ | ✓ | ✓ |
| Compresión gzip | ✓ | ✓ | ✓ | ✓ |
| Sin control plane | ✓ | ✗ xDS | ✓ | ✓ |
| Config | DSL propio | YAML + xDS | Caddyfile | YAML |
Comparación de arquitectura, no de benchmarks. Las cifras de throughput/latencia de Condor son objetivos de diseño y se publicarán cuando estén medidas.