2017-08-26 10:12:44 +00:00
# File Backends
2017-08-25 19:32:33 +00:00
2018-01-29 13:36:03 +00:00
Træfik can be configured with a file.
## Reference
```toml
2018-03-15 21:22:03 +00:00
[file]
2018-01-29 13:36:03 +00:00
# Backends
[backends]
[backends.backend1]
[backends.backend1.servers]
[backends.backend1.servers.server0]
url = "http://10.10.10.1:80"
weight = 1
[backends.backend1.servers.server1]
url = "http://10.10.10.2:80"
weight = 2
# ...
[backends.backend1.circuitBreaker]
expression = "NetworkErrorRatio() > 0.5"
[backends.backend1.loadBalancer]
method = "drr"
[backends.backend1.loadBalancer.stickiness]
cookieName = "foobar"
[backends.backend1.maxConn]
amount = 10
extractorfunc = "request.host"
[backends.backend1.healthCheck]
path = "/health"
port = 88
interval = "30s"
[backends.backend2]
# ...
# Frontends
[frontends]
[frontends.frontend1]
entryPoints = ["http", "https"]
backend = "backend1"
passHostHeader = true
passTLSCert = true
priority = 42
basicAuth = [
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
]
whitelistSourceRange = ["10.42.0.0/16", "152.89.1.33/32", "afed:be44::/16"]
[frontends.frontend1.routes]
[frontends.frontend1.routes.route0]
rule = "Host:test.localhost"
[frontends.frontend1.routes.Route1]
rule = "Method:GET"
# ...
[frontends.frontend1.headers]
allowedHosts = ["foobar", "foobar"]
hostsProxyHeaders = ["foobar", "foobar"]
SSLRedirect = true
SSLTemporaryRedirect = true
SSLHost = "foobar"
STSSeconds = 42
STSIncludeSubdomains = true
STSPreload = true
forceSTSHeader = true
frameDeny = true
customFrameOptionsValue = "foobar"
contentTypeNosniff = true
browserXSSFilter = true
contentSecurityPolicy = "foobar"
publicKey = "foobar"
referrerPolicy = "foobar"
isDevelopment = true
[frontends.frontend1.headers.customRequestHeaders]
X-Foo-Bar-01 = "foobar"
X-Foo-Bar-02 = "foobar"
# ...
[frontends.frontend1.headers.customResponseHeaders]
X-Foo-Bar-03 = "foobar"
X-Foo-Bar-04 = "foobar"
# ...
[frontends.frontend1.headers.SSLProxyHeaders]
X-Foo-Bar-05 = "foobar"
X-Foo-Bar-06 = "foobar"
# ...
[frontends.frontend1.errors]
[frontends.frontend1.errors.errorPage0]
status = ["500-599"]
backend = "error"
query = "/{status}.html"
[frontends.frontend1.errors.errorPage1]
status = ["404", "403"]
backend = "error"
query = "/{status}.html"
# ...
[frontends.frontend1.ratelimit]
extractorfunc = "client.ip"
[frontends.frontend1.ratelimit.rateset.rateset1]
period = "10s"
average = 100
burst = 200
[frontends.frontend1.ratelimit.rateset.rateset2]
period = "3s"
average = 5
burst = 10
# ...
[frontends.frontend1.redirect]
entryPoint = "https"
regex = "^http://localhost/(.*)"
replacement = "http://mydomain/$1"
2018-01-31 18:10:04 +00:00
permanent = true
2018-01-29 13:36:03 +00:00
[frontends.frontend2]
# ...
# HTTPS certificates
[[tls]]
entryPoints = ["https"]
[tls.certificate]
certFile = "path/to/my.cert"
keyFile = "path/to/my.key"
[[tls]]
# ...
```
## Configuration mode
2017-09-11 17:10:04 +00:00
You have three choices:
- [Simple ](/configuration/backends/file/#simple )
- [Rules in a Separate File ](/configuration/backends/file/#rules-in-a-separate-file )
- [Multiple `.toml` Files ](/configuration/backends/file/#multiple-toml-files )
2017-08-25 19:32:33 +00:00
2017-12-05 01:30:02 +00:00
To enable the file backend, you must either pass the `--file` option to the Træfik binary or put the `[file]` section (with or without inner settings) in the configuration file.
2017-11-09 11:16:03 +00:00
The configuration file allows managing both backends/frontends and HTTPS certificates (which are not [Let's Encrypt ](https://letsencrypt.org ) certificates generated through Træfik).
2018-01-29 13:36:03 +00:00
### Simple
2017-08-26 10:12:44 +00:00
Add your configuration at the end of the global configuration file `traefik.toml` :
2017-08-25 19:32:33 +00:00
```toml
defaultEntryPoints = ["http", "https"]
2017-09-05 13:58:03 +00:00
2017-08-25 19:32:33 +00:00
[entryPoints]
[entryPoints.http]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[entryPoints.https]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[file]
# rules
[backends]
[backends.backend1]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[backends.backend2]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[frontends]
[frontends.frontend1]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[frontends.frontend2]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[frontends.frontend3]
2018-01-29 13:36:03 +00:00
# ...
2017-11-09 11:16:03 +00:00
# HTTPS certificate
2018-01-23 15:30:07 +00:00
[[tls]]
2018-01-29 13:36:03 +00:00
# ...
2018-01-23 15:30:07 +00:00
[[tls]]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
```
2017-11-09 11:16:03 +00:00
!!! note
2018-01-24 10:57:06 +00:00
If `tls.entryPoints` is not defined, the certificate is attached to all the `defaultEntryPoints` with a TLS configuration.
2017-12-08 10:02:03 +00:00
!!! note
Adding certificates directly to the entryPoint is still maintained but certificates declared in this way cannot be managed dynamically.
2017-11-09 11:16:03 +00:00
It's recommended to use the file provider to declare certificates.
2018-01-29 13:36:03 +00:00
### Rules in a Separate File
2017-08-26 10:12:44 +00:00
Put your rules in a separate file, for example `rules.toml` :
2017-08-25 19:32:33 +00:00
```toml
# traefik.toml
2018-01-29 13:36:03 +00:00
defaultEntryPoints = ["http", "https"]
2017-08-25 19:32:33 +00:00
[entryPoints]
[entryPoints.http]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[entryPoints.https]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[file]
2018-01-29 13:36:03 +00:00
filename = "rules.toml"
2017-08-25 19:32:33 +00:00
```
```toml
# rules.toml
[backends]
[backends.backend1]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[backends.backend2]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[frontends]
[frontends.frontend1]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[frontends.frontend2]
2018-01-29 13:36:03 +00:00
# ...
2017-08-25 19:32:33 +00:00
[frontends.frontend3]
2018-01-29 13:36:03 +00:00
# ...
2017-11-09 11:16:03 +00:00
# HTTPS certificate
2018-01-23 15:30:07 +00:00
[[tls]]
2018-01-29 13:36:03 +00:00
# ...
2018-01-23 15:30:07 +00:00
[[tls]]
2018-01-29 13:36:03 +00:00
# ...
```
2017-08-25 19:32:33 +00:00
2018-01-29 13:36:03 +00:00
### Multiple `.toml` Files
2017-08-26 10:12:44 +00:00
2017-11-09 11:16:03 +00:00
You could have multiple `.toml` files in a directory (and recursively in its sub-directories):
2017-09-07 10:02:03 +00:00
2017-08-25 19:32:33 +00:00
```toml
[file]
2018-01-29 13:36:03 +00:00
directory = "/path/to/config/"
2017-08-25 19:32:33 +00:00
```
If you want Træfik to watch file changes automatically, just add:
```toml
[file]
2018-01-29 13:36:03 +00:00
watch = true
2017-08-25 19:32:33 +00:00
```