Go to file
2015-09-13 19:34:05 +02:00
middlewares docker backoff, routes middleware 2015-09-12 19:22:44 +02:00
providerTemplates go-bindata static files and templates 2015-09-11 18:47:54 +02:00
static static 2015-09-11 16:55:44 +02:00
templates Weights 2015-09-11 09:59:29 +02:00
configuration.go Negroni middlewares 2015-09-12 15:10:03 +02:00
docker.go docker backoff, routes middleware 2015-09-12 19:22:44 +02:00
Dockerfile.run Dockerfile 2015-09-12 01:30:28 +02:00
file.go Negroni middlewares 2015-09-12 15:10:03 +02:00
generate.go Negroni middlewares 2015-09-12 15:10:03 +02:00
LICENSE.md Licence 2015-09-10 10:02:51 +02:00
marathon.go Negroni middlewares 2015-09-12 15:10:03 +02:00
provider.go web provider 2015-09-08 13:33:10 +02:00
README.md README 2015-09-13 19:34:05 +02:00
ROADMAP.md docker backoff, routes middleware 2015-09-12 19:22:44 +02:00
traefik.go docker backoff, routes middleware 2015-09-12 19:22:44 +02:00
traefik.toml generate 2015-09-12 00:37:57 +02:00
web.go Negroni middlewares 2015-09-12 15:10:03 +02:00

/Træfɪk/

/Træfɪk/ is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. It supports several backends (Docker, Mesos/Marathon, Consul, Etcd, Rest API, file...) to manage its configuration automatically and dynamically (hot-reload).

Features

  • No dependency hell, single binary made with go
  • Simple json Rest API
  • Simple TOML file configuration
  • Multiple backends supported: Docker, Mesos/Marathon, Consul, Etcd, and more to come
  • Watchers for backends, can listen change in backends to apply a new configuration automatically
  • Hot-reloading of configuration. No need to restart the process
  • Graceful shutdown http connections during hot-reloads
  • Rest Metrics
  • Tiny docker image included
  • SSL backends support
  • SSL frontend support

Plumbing

  • Oxy: an awsome proxy librarymade by Mailgun guys
  • Gorilla mux: famous request router
  • Negroni: web middlewares made simple
  • Graceful: graceful shutdown of http.Handler servers

Quick start

  • The simple way: go to the releases page and get a binary.
  • Or simply execute:
go get github.com/emilevauge/traefik
  • Just run it!
./traefik traefik.toml

Configuration

Here is a sample configuration TOML file:

port = ":80"
graceTimeOut = 10
traefikLogsFile = "log/traefik.log"
traefikLogsStdout = true
accessLogsFile = "log/access.log"
logLevel = "DEBUG"
# CertFile = "traefik.crt"
# KeyFile = "traefik.key"

[docker]
endpoint = "unix:///var/run/docker.sock"
watch = true
domain = "localhost"
# filename = "docker.tmpl"

# [marathon]
# endpoint = "http://127.0.0.1:8080"
# networkInterface = "eth0"
# watch = true
# domain = "localhost"
# filename = "marathon.tmpl"

[web]
address = ":8080"

# [file]
# filename = "rules.toml"
# watch = true

[backends]
  [backends.backend1]
    [backends.backend1.servers.server1]
    url = "http://172.17.0.2:80"
    weight = 10
    [backends.backend1.servers.server2]
    url = "http://172.17.0.3:80"
    weight = 1
  [backends.backend2]
    [backends.backend2.servers.server1]
    url = "http://172.17.0.4:80"
    weight = 1

[routes]
  [routes.route1]
  backend = "backend2"
    [routes.route1.rules.test1]
    category = "Host"
    value = "test.localhost"
  [routes.route2]
  backend = "backend1"
    [routes.route2.rules.test2]
    category = "Path"
    value = "/test"