Fabio is a fast, modern, zero-conf load balancing HTTP(S) and TCP router for deploying applications managed by Consul.
Traditional load balancers and reverse proxies need to be configured with a config file. The configuration contains the hostnames and paths the proxy is forwarding to upstream services. This process can be automated with tools like consul-template that generate config files and trigger a reload.
Fabio works differently since it updates its routing table directly from the data stored in Consul as soon as there is a change and without restart or reloading.
The main use-case for fabio is to distribute incoming HTTP(S) and TCP requests from the internet to frontend (FE) services which can handle these requests. In this scenario the FE services then use the service discovery feature in Consul to find backend (BE) services they need in order to serve the request.
- Access Logging – customizable access logs.
- Access Control – route specific access control.
- Certificate Stores – dynamic certificate stores like file system, HTTP server, Consul and Vault.
- Compression – GZIP compression for HTTP responses.
- Docker Support – Official Docker image, Registrator and Docker Compose example.
- Dynamic Reloading – hot reloading of the routing table without downtime. fabio builds the routing table from the Consul service registrations, health check status and the user provided route commands stored in the Consul KV store.
- Graceful Shutdown – wait until requests have completed before shutting down.
- HTTP Header Support – inject some HTTP headers into upstream requests.
- HTTPS Upstreams – forward requests to HTTPS upstream servers. The current implementation requires that upstream certificates need to be in the system root CA list.
- Metrics Support – support for Graphite, StatsD/DataDog and Circonus.
- PROXY Protocol Support – support for HA Proxy PROXY protocol for inbound requests (use for Amazon ELB).
- Path Stripping – strip prefix paths from incoming requests.
- Server-Sent Events/SSE – support for Server-Sent Events/SSE. fabio detects SSE connections if the Accept header is set to text/event-stream and enables automatic flushing of the response buffer to forward data to the client.
- TCP Proxy Support – raw TCP proxy support. fabio can run a transparent TCP proxy which dynamically forwards an incoming connection on a given port to services which advertise that port.
- TCP-SNI Proxy Support – forward TLS connections based on hostname without re-encryption. fabio can run a transparent TCP proxy with SNI support which can forward any TLS connection without re-encrypting the traffic.
- HTTPS TCP-SNI Proxy Support – forward TLS connections based on hostname without re-encryption, or fallback to fabio terminating TLS and path routing as a fallback.
- Traffic Shaping – forward N% of traffic upstream without knowing the number of instances.
- Web UI – web ui to examine the current routing table. By default it listens on http://0.0.0.0:9998/.
- Websocket Support – fabio transparently supports Websocket connections by detecting the Upgrade: websocket header in the incoming HTTP(S) request.
|The largest compilation of the best free and open source software in the universe. Each article is supplied with a legendary ratings chart helping you to make informed decisions.|
|Hundreds of in-depth reviews offering our unbiased and expert opinion on software. We offer helpful and impartial information.|
|Replace proprietary software with open source alternatives: Google, Microsoft, Apple, Adobe, IBM, Autodesk, Oracle, Atlassian, Corel, Cisco, Intuit, and SAS.|
|Awesome Free Linux Games Tools showcases a series of tools that making gaming on Linux a more pleasurable experience. This is a new series.|
|Machine Learning explores practical applications of machine learning and deep learning from a Linux perspective. This is a new series.|
|New to Linux? Read our Linux for Starters series. We start right at the basics and teach you everything you need to know to get started with Linux.|
|Alternatives to popular CLI tools showcases essential tools that are modern replacements for core Linux utilities.|
|Essential Linux system tools focuses on small, indispensable utilities, useful for system administrators as well as regular users.|
|Linux utilities to maximise your productivity. Small, indispensable tools, useful for anyone running a Linux machine.|
|Surveys popular streaming services from a Linux perspective: Amazon Music Unlimited, Myuzi, Spotify, Deezer, Tidal.|
|Saving Money with Linux looks at how you can reduce your energy bills running Linux.|
|Home computers became commonplace in the 1980s. Emulate home computers including the Commodore 64, Amiga, Atari ST, ZX81, Amstrad CPC, and ZX Spectrum.|
|Now and Then examines how promising open source software fared over the years. It can be a bumpy ride.|
|Linux at Home looks at a range of home activities where Linux can play its part, making the most of our time at home, keeping active and engaged.|
|Linux Candy reveals the lighter side of Linux. Have some fun and escape from the daily drudgery.|
|Getting Started with Docker helps you master Docker, a set of platform as a service products that delivers software in packages called containers.|
|Best Free Android Apps. We showcase free Android apps that are definitely worth downloading. There's a strict eligibility criteria for inclusion in this series.|
|These best free books accelerate your learning of every programming language. Learn a new language today!|
|These free tutorials offer the perfect tonic to our free programming books series.|
|Linux Around The World showcases usergroups that are relevant to Linux enthusiasts. Great ways to meet up with fellow enthusiasts.|
|Stars and Stripes is an occasional series looking at the impact of Linux in the USA.|