249 lines
5.4 KiB
Markdown
249 lines
5.4 KiB
Markdown
# File Backends
|
|
|
|
Træfik can be configured with a file.
|
|
|
|
## Reference
|
|
|
|
```toml
|
|
[file]
|
|
|
|
# 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"
|
|
|
|
[frontends.frontend2]
|
|
# ...
|
|
|
|
# HTTPS certificates
|
|
[[tls]]
|
|
entryPoints = ["https"]
|
|
[tls.certificate]
|
|
certFile = "path/to/my.cert"
|
|
keyFile = "path/to/my.key"
|
|
|
|
[[tls]]
|
|
# ...
|
|
```
|
|
|
|
## Configuration mode
|
|
|
|
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)
|
|
|
|
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.
|
|
|
|
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).
|
|
|
|
### Simple
|
|
|
|
Add your configuration at the end of the global configuration file `traefik.toml`:
|
|
|
|
```toml
|
|
defaultEntryPoints = ["http", "https"]
|
|
|
|
[entryPoints]
|
|
[entryPoints.http]
|
|
# ...
|
|
[entryPoints.https]
|
|
# ...
|
|
|
|
[file]
|
|
|
|
# rules
|
|
[backends]
|
|
[backends.backend1]
|
|
# ...
|
|
[backends.backend2]
|
|
# ...
|
|
|
|
[frontends]
|
|
[frontends.frontend1]
|
|
# ...
|
|
[frontends.frontend2]
|
|
# ...
|
|
[frontends.frontend3]
|
|
# ...
|
|
|
|
# HTTPS certificate
|
|
[[tls]]
|
|
# ...
|
|
|
|
[[tls]]
|
|
# ...
|
|
```
|
|
|
|
!!! note
|
|
adding certificates directly to the entrypoint is still maintained but certificates declared in this way cannot be managed dynamically.
|
|
It's recommended to use the file provider to declare certificates.
|
|
|
|
### Rules in a Separate File
|
|
|
|
Put your rules in a separate file, for example `rules.toml`:
|
|
|
|
```toml
|
|
# traefik.toml
|
|
defaultEntryPoints = ["http", "https"]
|
|
|
|
[entryPoints]
|
|
[entryPoints.http]
|
|
# ...
|
|
[entryPoints.https]
|
|
# ...
|
|
|
|
[file]
|
|
filename = "rules.toml"
|
|
```
|
|
|
|
```toml
|
|
# rules.toml
|
|
[backends]
|
|
[backends.backend1]
|
|
# ...
|
|
[backends.backend2]
|
|
# ...
|
|
|
|
[frontends]
|
|
[frontends.frontend1]
|
|
# ...
|
|
[frontends.frontend2]
|
|
# ...
|
|
[frontends.frontend3]
|
|
# ...
|
|
|
|
# HTTPS certificate
|
|
[[tls]]
|
|
# ...
|
|
|
|
[[tls]]
|
|
# ...
|
|
```
|
|
|
|
### Multiple `.toml` Files
|
|
|
|
You could have multiple `.toml` files in a directory (and recursively in its sub-directories):
|
|
|
|
```toml
|
|
[file]
|
|
directory = "/path/to/config/"
|
|
```
|
|
|
|
If you want Træfik to watch file changes automatically, just add:
|
|
|
|
```toml
|
|
[file]
|
|
watch = true
|
|
```
|