traefik/README.md

101 lines
2.5 KiB
Markdown
Raw Normal View History

2015-09-13 17:34:05 +00: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
2015-09-13 19:12:24 +00:00
* [Oxy](https://github.com/mailgun/oxy/): an awsome proxy librarymade by Mailgun guys
* [Gorilla mux](https://github.com/gorilla/mux): famous request router
* [Negroni](https://github.com/codegangsta/negroni): web middlewares made simple
* [Graceful](https://github.com/tylerb/graceful): graceful shutdown of http.Handler servers
2015-09-13 17:34:05 +00:00
## Quick start
* The simple way: go to the [releases](https://github.com/emilevauge/traefik/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:
```toml
port = ":80"
graceTimeOut = 10
logLevel = "DEBUG"
2015-09-13 19:08:43 +00:00
traefikLogsStdout = true
# traefikLogsFile = "log/traefik.log"
# accessLogsFile = "log/access.log"
2015-09-13 17:34:05 +00:00
# CertFile = "traefik.crt"
# KeyFile = "traefik.key"
2015-09-13 19:08:43 +00:00
[web]
address = ":8080"
# [docker]
# endpoint = "unix:///var/run/docker.sock"
# watch = true
# domain = "localhost"
2015-09-13 17:34:05 +00:00
# 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"
```