Um servidor de borda
escrito em Zig, sem atalhos.
exu é um servidor web e reverse proxy Linux-first, feito para operar diretamente sob tráfego não confiável — uma alternativa real a Nginx e Caddy, sem herdar sua sintaxe nem seus defaults.
Já implementado, testado, em produção-canário
Um único runtime cobrindo estático, FastCGI e reverse proxy — com master/workers, reload sem downtime e sandbox de filesystem.
HTTP/1.0 e 1.1
Keep-alive e tarefas concorrentes por conexão, com limites explícitos de headers e body.
Master / workers
-cpu N, respawn automático, reload geracional e drain gracioso sem indisponibilidade.
Sandbox de filesystem
Sandbox global, por host e por vhost — path normalizado e contido no document root.
Estático eficiente
ETag, Last-Modified, condicionais, range requests, gzip e cache de até 1.024 arquivos.
FastCGI & proxy
FastCGI TCP/Unix com streaming/SSE, e reverse proxy com bodies em fluxo e X-Forwarded-*.
Observabilidade nativa
X-Request-ID em toda resposta e access log JSON Lines, pronto para journald.
Em evolução, por design
Engine HTTP, roteamento e observabilidade serão extraídos como camadas independentes — permitindo comparar implementações sem reescrever handlers.
Listener / processo master └── workers └── HTTP engine └── router ├── redirect ├── handler tipado ├── FastCGI ├── arquivo estático └── reverse proxy
Marcos até a borda
Cada marco tem um gate objetivo — não avança por preferência técnica, só por evidência.
O que dá pra confiar hoje
O projeto é explícito sobre o que falta — nada aqui é maquiado.
- ✓ HTTP/1.1 estrito com keep-alive
- ✓ Master/workers, respawn e drain
- ✓ Sandbox e múltiplos document roots
- ✓ Cache condicional, range e gzip
- ✓ FastCGI e reverse proxy TCP/Unix
- ✓ Access log JSON +
X-Request-ID
- – TLS nativo e HTTP/2
- – Logs de erro estruturados e métricas
- – Deadlines completos de I/O
- – Múltiplos listeners/servidores
- – WebSocket e balanceamento
- – Fuzzing, slowloris e soak prolongado