Freedom251 › Reverse Proxy Software
Fabio

What Fabio is
Fabio is a self-hosted HTTP and TCP reverse proxy that builds its routing from Consul data. Services can register path tags, and Fabio updates its routing table when Consul data changes without restarting or reloading. Its main role is distributing incoming HTTP(S) and TCP requests from the internet to frontend services; its documentation says Consul service discovery handles frontend-to-backend routing instead. Fabio supports route-specific access controls, customizable access logs, authorization, redirects, compression, header injection, path changes, WebSockets, server-sent events, and transparent gRPC proxying. It can terminate TLS, forward HTTPS upstream requests, use dynamic certificate stores from files, HTTP servers, Consul, or Vault, and proxy raw TCP or TCP-SNI traffic. Traffic shaping can direct a percentage of traffic upstream without knowing the number of instances. A web UI shows the current routing table, and metrics integrations include Graphite, StatsD/DataDog, and Circonus. It is free open-source software, and Consul is required for service discovery. Installation options include source, prebuilt binaries, Docker, and Homebrew. The project says primary maintenance has been handled by Education Networks of America and the user community since January 2020.
Who it suits
Fabio suits operators who need a self-hosted proxy for incoming HTTP(S) or TCP traffic routed from Consul service data. It is not described as a frontend-to-backend or backend-to-backend router.
What it does well
- Routing updates when Consul data changes.
- Supports TLS termination and dynamic certificate stores.
- Includes WebSocket and transparent gRPC proxying.
- Traffic shaping can use percentage-based routing.
- Web UI displays the current routing table.
What to know first
- Consul is required for service discovery.
- Not intended for frontend-to-backend routing.
- Primary maintenance has been handled by ENA and the community since January 2020.
Limits
The free open-source plan is self-hosted and requires Consul for service discovery. Fabio is not currently used to route traffic between frontend and backend services because Consul service discovery handles that use case.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Fabio (open source) | MIT-licensed software · Consul required for service discovery | Free |
As github.com lists them, read 11 Oct 2026. The maker's own page has the final word.
Getting started
- Choose a self-hosted deployment route: source, prebuilt binaries, Docker, or Homebrew.
- Install Fabio on Linux, macOS, or Windows.
- Set up Consul for service discovery.
- Register services with path tags for the routes they accept.
- Use the web UI to examine the current routing table.
Fabio is a self-hosted HTTP and TCP reverse proxy that builds its routing from Consul service data. It is best suited to teams already using Consul to direct internet traffic to frontend services. Its protocol range and live route updates are compelling, but the Consul dependency and focused role make it a poor fit for service-to-service routing.
Overview
Services can register path tags such as urlprefix-/user; when Consul data changes, Fabio updates its routing table without a restart or reload. That keeps routes aligned with service registration and avoids a separate manual routing update. Fabio is intended to handle incoming HTTP(S) and TCP requests to frontend services, not to route between frontend and backend services: its deployment guidance assigns that job to Consul service discovery.
Fabio can be deployed from source, as a prebuilt binary, in Docker, or through Homebrew. It is self-hosted and supports Linux, macOS, and Windows. The project site says primary maintenance has been handled by Education Networks of America and the user community since January 2020, a consideration for organizations weighing long-term ownership.
Key features
Routing and traffic handling
Beyond HTTP and raw TCP proxying, Fabio supports redirects, access control, authorization, customizable access logs, compression, header injection, path prepending and stripping, WebSockets, server-sent events, and transparent gRPC proxying. This breadth makes it useful when frontend traffic needs more than simple host or path forwarding. Traffic shaping can send a chosen percentage upstream without requiring Fabio to know the number of service instances, which can support gradual traffic shifts.
TLS and live operations
Fabio supports TLS termination, HTTPS upstreams, and dynamic certificate stores sourced from files, HTTP servers, Consul, or Vault. TCP-SNI forwarding works without re-encryption. The README cautions that newer builds do not validate HTTPS upstream certificates lacking matching SAN extensions, so operators should account for that behavior when securing upstream connections.
Routing changes can be hot-reloaded without downtime, and Fabio can wait for in-flight requests to finish before shutdown. A web UI shows the current routing table; integrations include Vault, Docker, Graphite, StatsD/DataDog, Circonus, Amazon ELB, and Amazon NLB. Release hashes are signed with a PGP key.
Pricing
Fabio (open source): free. The MIT-licensed software is self-hosted, with no free trial; Consul is required for service discovery. There are no paid tiers or published usage caps in this plan. The tradeoff is operational responsibility: teams must deploy and maintain the proxy and its Consul integration themselves.
Platforms
Fabio supports Linux, macOS, and Windows, and is self-hosted. Installation options include source, prebuilt binaries, Docker, and Homebrew. TLS termination and WebSocket support are included, and configuration supports both documented methods.
Who it's for
Fabio is a strong fit for teams running Consul that need a self-hosted entry point for HTTP(S) and TCP traffic to frontend services, particularly where dynamic routes, multiple certificate sources, or percentage-based traffic shaping matter. It is not the natural choice for routing between application tiers, since that use case is assigned to Consul service discovery. Teams seeking a managed service or not already operating Consul should weigh the deployment burden before choosing it.
Pros and cons
- Pro: Consul-driven route updates avoid restarts when service data changes.
- Pro: HTTP, TCP, TLS, gRPC, WebSockets, and traffic shaping cover varied frontend traffic needs in one proxy.
- Pro: Hot reloads and graceful shutdown help preserve service during routing changes and maintenance.
- Con: Consul is required for service discovery, making Fabio a narrower fit outside Consul-based deployments.
- Con: Its intended role excludes frontend-to-backend and backend-to-backend routing.
- Con: The upstream certificate behavior for HTTPS connections requires care when certificates lack matching SAN extensions.
Alternatives
For a free reverse-proxy option without Fabio's stated Consul requirement, consider freenginx, which is distributed under a 2-clause BSD-like license. frp is another free, self-hosted reverse proxy with client and server binaries, and may suit deployments needing that client-server arrangement.
LocalXpose offers a free Starter plan with two active HTTP or HTTPS tunnels, SSL/TLS encryption, unique subdomains, time limits, and an interstitial warning page. ngrok may suit readers seeking a free endpoint service with included usage: its free plan specifies up to three online endpoints and 1GB of data transfer.
Openport has an enterprise plan priced at $1 a month per device, with a 30-device minimum; consider it when that device-based plan fits the deployment. Pomerium offers a free personal plan capped at 10 users, 10 routes, 5 policies, and 2 service accounts, making those limits relevant for smaller deployments. Zoraxy is a free AGPL-licensed open-source option. Envoy Proxy is a free open-source proxy installable through Docker, macOS Homebrew, or a static binary.
Browse the Reverse Proxy Software directory for more options.
Verdict
Choose Fabio if Consul already drives your service discovery and you need a self-hosted proxy for incoming HTTP(S) and TCP traffic, with flexible TLS and live routing changes. Look elsewhere if you need a proxy for traffic between application tiers or want to avoid operating Consul alongside the proxy.
Verdict
Fabio combines Consul-driven routing with HTTP, TCP, TLS, and traffic-management features for incoming requests to frontend services. Its stated role and Consul dependency make those deployment requirements important to weigh first.
Questions
How much does Fabio cost?
Fabio is free open-source software. Its listed plan is free.
Is Fabio self-hosted?
Yes. Fabio is a self-hosted deployment.
Which platforms does Fabio support?
It runs on Linux, macOS, and Windows.
Does Fabio require Consul?
Yes. Consul is required for service discovery, and Fabio uses Consul data to configure its routing.
What traffic can Fabio proxy?
It handles HTTP(S) and TCP traffic, including raw TCP, TCP-SNI forwarding, and transparent gRPC proxying.
How can Fabio be deployed?
The project lists installation from source, prebuilt binaries, Docker, and Homebrew.
Facts from Fabio's own pages
- Automatic routing
- When a Consul service registers path tags, Fabio updates its routing table as soon as Consul data changes, without restarting or reloading. · fabiolb.net, 11 Oct 2026
- Deployment
- The project README lists installation from source, prebuilt binaries, Docker, and Homebrew. · github.com, 11 Oct 2026
- Integrations
- The features page lists Consul, Vault, Docker, Graphite, StatsD/DataDog, Circonus, Amazon ELB, and Amazon NLB support. · fabiolb.net, 11 Oct 2026
- Live changes
- Fabio can hot reload its routing table without downtime and wait for requests to finish before shutting down. · fabiolb.net, 11 Oct 2026
- Maintainer
- The project site says primary maintenance has been the responsibility of ENA and the user community since January 2020. · fabiolb.net, 11 Oct 2026
- Maintenance
- The project site says primary maintenance has been the responsibility of Education Networks of America and the user community since January 2020. · fabiolb.net, 11 Oct 2026
- Metrics
- The feature page lists support for Graphite, StatsD/DataDog, and Circonus metrics. · fabiolb.net, 11 Oct 2026
- 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. · fabiolb.net, 11 Oct 2026
- Operations
- Fabio provides a web UI for examining the current routing table and supports metrics integrations. · fabiolb.net, 11 Oct 2026
- Primary use
- Fabio is intended to distribute incoming HTTP(S) and TCP requests from the internet to frontend services. · fabiolb.net, 11 Oct 2026
- Primary use case
- The main use case is distributing incoming HTTP(S) and TCP requests from the internet to frontend services. · fabiolb.net, 11 Oct 2026
- Product
- Fabio is an HTTP and TCP reverse proxy that configures its routing from Consul data. · fabiolb.net, 11 Oct 2026
- Proxy features
- Fabio supports transparent gRPC proxying, HTTP compression, header injection, redirects, path prepending and stripping, WebSockets, and server-sent events. · fabiolb.net, 11 Oct 2026
- Purpose
- Fabio is an HTTP and TCP reverse proxy that configures itself with data from Consul. · fabiolb.net, 11 Oct 2026
- Routing features
- Features include route specific access control, customizable access logs, authorization mechanisms, and HTTP redirects. · fabiolb.net, 11 Oct 2026
- Security
- The README says release hashes are signed with a PGP key and describes TLS certificate verification behavior for upstream HTTPS connections. · github.com, 11 Oct 2026
- 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. · github.com, 11 Oct 2026
- 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. · fabiolb.net, 11 Oct 2026
- Service tags
- Registered services use tags such as `urlprefix-/user` to announce the paths they accept. · fabiolb.net, 11 Oct 2026
- TCP and protocols
- Fabio supports raw TCP proxying, TCP-SNI forwarding without re-encryption, and transparent gRPC proxying. · fabiolb.net, 11 Oct 2026
- TLS
- Fabio supports dynamic certificate stores using files, HTTP servers, Consul, or Vault, and can forward HTTPS upstream requests. · fabiolb.net, 11 Oct 2026
- TLS and certificates
- Fabio supports HTTPS upstreams, TCP-SNI proxying, TLS termination, and dynamic certificate stores including filesystem, HTTP server, Consul, and Vault. · fabiolb.net, 11 Oct 2026
- Traffic handling
- Traffic shaping can forward a percentage of traffic upstream without knowing the number of instances. · fabiolb.net, 11 Oct 2026
- Traffic management
- Traffic shaping can send a percentage of traffic upstream without knowing the number of instances. · fabiolb.net, 11 Oct 2026
Where Fabio stands on Freedom251
- Reverse Proxy Software#8 of 33