Træfik (pronounced like traffic) is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. It supports several backends (Docker, Swarm mode, Kubernetes, Marathon, Consul, Etcd, Rancher, Amazon ECS, and a lot more) to manage its configuration automatically and dynamically.
| Overview | Features | Supported backends | Quickstart | Web UI | Test it | Documentation | Support | Release cycle |
| Contributing | Maintainers | Plumbing | Credits |
Imagine that you have deployed a bunch of microservices on your infrastructure. You probably used a service registry (like etcd or consul) and/or an orchestrator (swarm, Mesos/Marathon) to manage all these services. If you want your users to access some of your microservices from the Internet, you will have to use a reverse proxy and configure it using virtual hosts or prefix paths:
- domain 
api.domain.comwill point the microserviceapiin your private network - path 
domain.com/webwill point the microservicewebin your private network - domain 
backoffice.domain.comwill point the microservicesbackofficein your private network, load-balancing between your multiple instances 
But a microservices architecture is dynamic... Services are added, removed, killed or upgraded often, eventually several times a day.
Traditional reverse-proxies are not natively dynamic. You can't change their configuration and hot-reload easily.
Here enters Træfik.
Træfik can listen to your service registry/orchestrator API, and knows each time a microservice is added, removed, killed or upgraded, and can generate its configuration automatically. Routes to your services will be created instantly.
Run it and forget it!
- It's fast
 - No dependency hell, single binary made with go
 - Tiny official official docker image
 - Rest API
 - Hot-reloading of configuration. No need to restart the process
 - Circuit breakers, retry
 - Round Robin, rebalancer load-balancers
 - Metrics (Rest, Prometheus, Datadog, Statd)
 - Clean AngularJS Web UI
 - Websocket, HTTP/2, GRPC ready
 - Access Logs (JSON, CLF)
 - Let's Encrypt support (Automatic HTTPS with renewal)
 - Proxy Protocol support
 - High Availability with cluster mode (beta)
 
- Docker / Swarm mode
 - Kubernetes
 - Mesos / Marathon
 - Rancher (API, Metadata)
 - Consul / Etcd / Zookeeper / BoltDB
 - Eureka
 - Amazon ECS
 - Amazon DynamoDB
 - File
 - Rest API
 
You can have a quick look at Træfik in this Katacoda tutorial that shows how to load balance requests between multiple Docker containers. If you are looking for a more comprehensive and real use-case example, you can also check Play-With-Docker to see how to load balance between multiple nodes.
Here is a talk given by Emile Vauge at GopherCon 2017. You will learn Træfik basics in less than 10 minutes.
Here is a talk given by Ed Robinson at ContainerCamp UK conference. You will learn fundamental Træfik features and see some demos with Kubernetes.
You can access the simple HTML frontend of Træfik.
- The simple way: grab the latest binary from the releases page and just run it with the sample configuration file:
 
./traefik --configFile=traefik.toml- Use the tiny Docker image and just run it with the sample configuration file:
 
docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik- From sources:
 
git clone https://github.com/containous/traefikYou can find the complete documentation at https://docs.traefik.io. A collection of contributions around Træfik can be found at https://awesome.traefik.io.
To get basic support, you can:
- join the Træfik community Slack channel: 
 - use Stack Overflow (using the 
traefiktag) 
If you prefer commercial support, please contact containo.us by mail: mailto:[email protected].
- Release: We try to release a new version every 2 months
- i.e.: 1.3.0, 1.4.0, 1.5.0
 
 - Release candidate: we do RC (1.x.0-rcy) before the final release (1.x.0)
- i.e.: 1.1.0-rc1 -> 1.1.0-rc2 -> 1.1.0-rc3 -> 1.1.0-rc4 -> 1.1.0
 
 - Bug-fixes: For each version we release bug fixes
- i.e.: 1.1.1, 1.1.2, 1.1.3
 - those versions contain only bug-fixes
 - no additional features are delivered in those versions
 
 - Each version is supported until the next one is released
- i.e.: 1.1.x will be supported until 1.2.0 is out
 
 - We use Semantic Versioning
 
Please refer to contributing documentation.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Information about process and maintainers
- Oxy: an awesome proxy library made by Mailgun folks
 - Gorilla mux: famous request router
 - Negroni: web middlewares made simple
 - Lego: the best Let's Encrypt library in go
 
Kudos to Peka for his awesome work on the logo .
Traefik's logo licensed under the Creative Commons 3.0 Attributions license.
Traefik's logo was inspired by the gopher stickers made by Takuya Ueda (https://twitter.com/tenntenn). The original Go gopher was designed by Renee French (http://reneefrench.blogspot.com/).