Fabio
github.com
What it is
Fabio is a self-hosted HTTP and TCP reverse proxy that builds its routing from Consul service data. Services can announce accepted paths with tags such as `urlprefix-/user`; Fabio then refreshes its routing table when Consul changes, without restarting or reloading. Its main role is distributing incoming HTTP(S) and TCP traffic from the internet to frontend services. It is not intended for frontend-to-backend or backend-to-backend routing, where Consul service discovery is used instead. Fabio provides route-specific access control, authorization, customizable logs, redirects, compression, header injection, path changes, WebSockets, server-sent events, and transparent gRPC proxying. It supports TLS termination, dynamic certificate stores, HTTPS upstreams, raw TCP, TCP-SNI forwarding, and traffic shaping by percentage. A web UI shows the active routes, with metrics integrations. Fabio is free, open-source software for Linux, macOS, and Windows, and requires Consul for service discovery.
Spec sheet
- Purpose
- Fabio is an HTTP and TCP reverse proxy that configures itself with data from Consul.Read 11 Oct 2026 · fabiolb.net
- Product
- Fabio is an HTTP and TCP reverse proxy that configures its routing from Consul data.Read 11 Oct 2026 · fabiolb.net
- Deployment
- The project README lists installation from source, prebuilt binaries, Docker, and Homebrew.Read 11 Oct 2026 · github.com
- Integrations
- The project README says Fabio integrates with Consul, Vault, Amazon ELB, and Amazon API Gateway.Read 11 Oct 2026 · github.com
- Security
- The README says release hashes are signed with a PGP key and describes TLS certificate verification behavior for upstream HTTPS connections.Read 11 Oct 2026 · github.com
- Automatic routing
- When a Consul service registers path tags, Fabio updates its routing table as soon as Consul data changes, without restarting or reloading.Read 11 Oct 2026 · fabiolb.net
- Live changes
- Fabio can hot reload its routing table without downtime and wait for requests to finish before shutting down.Read 11 Oct 2026 · fabiolb.net
- Maintainer
- The project site says primary maintenance has been the responsibility of ENA and the user community since January 2020.Read 11 Oct 2026 · fabiolb.net
- Maintenance
- The project site says primary maintenance has been the responsibility of Education Networks of America and the user community since January 2020.Read 11 Oct 2026 · fabiolb.net
- Metrics
- The feature page lists support for Graphite, StatsD/DataDog, and Circonus metrics.Read 11 Oct 2026 · fabiolb.net
- Notable limit
- The deployment page says Fabio is currently not used as a frontend-to-backend or backend-to-backend router because Consul service discovery already solves that problem.Read 11 Oct 2026 · fabiolb.net
- Operations
- Fabio provides a web UI for examining the current routing table and supports metrics integrations.Read 11 Oct 2026 · fabiolb.net
- Primary use
- Fabio is intended to distribute incoming HTTP(S) and TCP requests from the internet to frontend services.Read 11 Oct 2026 · fabiolb.net
- Primary use case
- The main use case is distributing incoming HTTP(S) and TCP requests from the internet to frontend services.Read 11 Oct 2026 · fabiolb.net
- Proxy features
- Fabio supports transparent gRPC proxying, HTTP compression, header injection, redirects, path prepending and stripping, WebSockets, and server-sent events.Read 11 Oct 2026 · fabiolb.net
- Routing features
- Features include route specific access control, customizable access logs, authorization mechanisms, and HTTP redirects.Read 11 Oct 2026 · fabiolb.net
- Security detail
- The README says binary release hashes are signed with a PGP key and notes that HTTPS upstream certificates without matching SAN extensions are not validated by newer builds.Read 11 Oct 2026 · github.com
- Service mesh limits
- The documentation says Fabio is currently not used to route traffic among frontend and backend services because Consul service discovery already handles that use case.Read 11 Oct 2026 · fabiolb.net
- Service tags
- Registered services use tags such as `urlprefix-/user` to announce the paths they accept.Read 11 Oct 2026 · fabiolb.net
- TCP and protocols
- Fabio supports raw TCP proxying, TCP-SNI forwarding without re-encryption, and transparent gRPC proxying.Read 11 Oct 2026 · fabiolb.net
- TLS
- Fabio supports dynamic certificate stores using files, HTTP servers, Consul, or Vault, and can forward HTTPS upstream requests.Read 11 Oct 2026 · fabiolb.net
- TLS and certificates
- Fabio supports HTTPS upstreams, TCP-SNI proxying, TLS termination, and dynamic certificate stores including filesystem, HTTP server, Consul, and Vault.Read 11 Oct 2026 · fabiolb.net
- Traffic handling
- Traffic shaping can forward a percentage of traffic upstream without knowing the number of instances.Read 11 Oct 2026 · fabiolb.net
- Traffic management
- Traffic shaping can send a percentage of traffic upstream without knowing the number of instances.Read 11 Oct 2026 · fabiolb.net
Plans and prices
Strong points and limits
Strong points
- Free, open-source software
- Consul updates routes without restarts
- Supports HTTP, TCP, gRPC, and WebSockets
- Dynamic certificate stores and TLS termination
- Web UI and metrics integrations
Limits
- Consul is required for service discovery
- Not intended for frontend-to-backend routing
- Self-hosted deployment requires operations work
- Primary maintenance shifted to ENA and community in 2020
Who it suits
Fabio suits teams running their own infrastructure that need Consul-driven routing for internet-facing frontend services. It is also relevant where raw TCP, TLS handling, WebSockets, or gRPC proxying are required.
Verdict
Fabio combines Consul-based automatic routing with HTTP, TCP, TLS, and protocol features. Its documented scope is internet-to-frontend traffic, not service-to-service routing, and deployment is self-hosted.
Where Specifiction places it
- Reverse Proxy Software#4 of 338.8