Skip to content
SPECIFICTION
Get listed

Fabio

github.com

Free plan WindowsmacOSLinuxSelf-hosted
Visit github.com
Spec score 8.8 #4 of 33 in Reverse Proxy Software

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

Fabio (open source) Free MIT-licensed software · Consul required for service discovery Read 11 Oct 2026 · github.com

Every Fabio plan and price →

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

Alternatives to FabioAll alternatives →