mirror of
https://github.com/containous/traefik.git
synced 2025-01-06 13:17:52 +03:00
2.5 KiB
2.5 KiB
/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
logLevel = "DEBUG"
traefikLogsStdout = true
# traefikLogsFile = "log/traefik.log"
# accessLogsFile = "log/access.log"
# CertFile = "traefik.crt"
# KeyFile = "traefik.key"
[web]
address = ":8080"
# [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"
# [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"