doc: improve examples.

This commit is contained in:
Ludovic Fernandez 2019-07-22 09:58:04 +02:00 committed by Traefiker Bot
parent 8b4ba3cb67
commit 75c99a0491
69 changed files with 1256 additions and 552 deletions

View file

@ -9,20 +9,25 @@ Understanding how you use Traefik is very important to us: it helps us improve t
For this very reason, the sendAnonymousUsage option is mandatory: we want you to take time to consider whether or not you wish to share anonymous data with us so we can benefit from your experience and use cases. For this very reason, the sendAnonymousUsage option is mandatory: we want you to take time to consider whether or not you wish to share anonymous data with us so we can benefit from your experience and use cases.
!!! warning !!! warning
During the alpha stage only, leaving this option unset will not prevent Traefik from running but will generate an error log indicating that it enables data collection by default. During the beta stage only, leaving this option unset will not prevent Traefik from running but will generate an error log indicating that it enables data collection by default.
??? example "Enabling Data Collection with TOML" !!! example "Enabling Data Collection"
```toml ```toml tab="File (TOML)"
[global] [global]
# Send anonymous usage data # Send anonymous usage data
sendAnonymousUsage = true sendAnonymousUsage = true
``` ```
??? example "Enabling Data Collection with the CLI" ```yaml tab="File (YAML)"
global:
# Send anonymous usage data
sendAnonymousUsage: true
```
```bash ```bash tab="CLI"
./traefik --sendAnonymousUsage=true # Send anonymous usage data
--global.sendAnonymousUsage
``` ```
## Collected Data ## Collected Data

View file

@ -8,7 +8,7 @@ You can install Traefik with the following flavors:
## Use the Official Docker Image ## Use the Official Docker Image
Choose one of the [official Docker images](https://hub.docker.com/_/traefik) and run it with the [sample configuration file](https://raw.githubusercontent.com/containous/traefik/master/traefik.sample.toml): Choose one of the [official Docker images](https://hub.docker.com/_/traefik) and run it with the [sample configuration file](https://raw.githubusercontent.com/containous/traefik/v2.0/traefik.sample.toml):
```shell ```shell
docker run -d -p 8080:8080 -p 80:80 \ docker run -d -p 8080:8080 -p 80:80 \

View file

@ -109,7 +109,7 @@ when using the `TLS-ALPN-01` challenge, Traefik must be reachable by Let's Encry
```bash tab="CLI" ```bash tab="CLI"
# ... # ...
--certificatesResolvers.sample.acme.tlsChallenge --certificatesResolvers.sample.acme.tlsChallenge=true
``` ```
### `httpChallenge` ### `httpChallenge`

View file

@ -1,5 +1,4 @@
# Enable ACME (Let's Encrypt): automatic SSL. # Enable ACME (Let's Encrypt): automatic SSL.
--certificatesResolvers.sample.acme
# Email address used for registration. # Email address used for registration.
# #
@ -35,13 +34,13 @@
# #
# Optional (but recommended) # Optional (but recommended)
# #
--certificatesResolvers.sample.acme.tlsChallenge --certificatesResolvers.sample.acme.tlsChallenge=true
# Use a HTTP-01 ACME challenge. # Use a HTTP-01 ACME challenge.
# #
# Optional # Optional
# #
--certificatesResolvers.sample.acme.httpChallenge --certificatesResolvers.sample.acme.httpChallenge=true
# EntryPoint to use for the HTTP-01 challenges. # EntryPoint to use for the HTTP-01 challenges.
# #
@ -54,7 +53,7 @@
# #
# Optional # Optional
# #
--certificatesResolvers.sample.acme.dnsChallenge --certificatesResolvers.sample.acme.dnsChallenge=true
# DNS provider used. # DNS provider used.
# #

View file

@ -35,7 +35,7 @@ tls:
!!! important "File Provider Only" !!! important "File Provider Only"
In the above example, we've used the [file provider](../providers/file.md) to handle these definitions. In the above example, we've used the [file provider](../providers/file.md) to handle these definitions.
In its current alpha version, it is the only available method to configure the certificates (as well as the options and the stores). In its current beta version, it is the only available method to configure the certificates (as well as the options and the stores).
## Certificates Stores ## Certificates Stores
@ -52,9 +52,9 @@ tls:
default: {} default: {}
``` ```
!!! important "Alpha restriction" !!! important "Beta restriction"
During the alpha version, any store definition other than the default one (named `default`) will be ignored, During the beta version, any store definition other than the default one (named `default`) will be ignored,
and there is thefore only one globally available TLS store. and there is thefore only one globally available TLS store.
In the `tls.certificates` section, a list of stores can then be specified to indicate where the certificates should be stored: In the `tls.certificates` section, a list of stores can then be specified to indicate where the certificates should be stored:
@ -85,9 +85,9 @@ tls:
keyFile: /path/to/other-domain.key keyFile: /path/to/other-domain.key
``` ```
!!! important "Alpha restriction" !!! important "Beta restriction"
During the alpha version, the `stores` list will actually be ignored and automatically set to `["default"]`. During the beta version, the `stores` list will actually be ignored and automatically set to `["default"]`.
### Default Certificate ### Default Certificate

View file

@ -1,2 +1,2 @@
!!! info "More On Entrypoints" !!! info "More On Entry Points"
Learn more about entrypoints and their configuration options in the dedicated section. Learn more about entry points and their configuration options in the dedicated section.

View file

@ -38,13 +38,22 @@ labels:
- "traefik.http.middlewares.add-foo.addprefix.prefix=/foo" - "traefik.http.middlewares.add-foo.addprefix.prefix=/foo"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Prefixing with /foo # Prefixing with /foo
[http.middlewares] [http.middlewares]
[http.middlewares.add-foo.addPrefix] [http.middlewares.add-foo.addPrefix]
prefix = "/foo" prefix = "/foo"
``` ```
```yaml tab="File (YAML)"
# Prefixing with /foo
http:
middlewares:
add-foo:
addPrefix:
prefix: "/foo"
```
## Configuration Options ## Configuration Options
### `prefix` ### `prefix`

View file

@ -44,7 +44,7 @@ labels:
- "traefik.http.middlewares.test-auth.basicauth.users=test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/,test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0" - "traefik.http.middlewares.test-auth.basicauth.users=test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/,test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Declaring the user list # Declaring the user list
[http.middlewares] [http.middlewares]
[http.middlewares.test-auth.basicAuth] [http.middlewares.test-auth.basicAuth]
@ -54,6 +54,17 @@ labels:
] ]
``` ```
```yaml tab="File (YAML)"
# Declaring the user list
http:
middlewares:
test-auth:
basicAuth:
users:
- "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
```
## Configuration Options ## Configuration Options
### General ### General
@ -119,12 +130,21 @@ spec:
} }
``` ```
```toml tab="File" ```toml tab="File (TOML)"
[http.middlewares.my-auth.basicAuth] [http.middlewares.my-auth.basicAuth]
# ... # ...
headerField = "X-WebAuth-User" headerField = "X-WebAuth-User"
``` ```
```yaml tab="File (YAML)"
http:
middlewares:
my-auth:
basicAuth:
# ...
headerField: "X-WebAuth-User"
```
### `removeHeader` ### `removeHeader`
Set the `removeHeader` option to `true` to remove the authorization header before forwarding the request to your service. (Default value is `false`.) Set the `removeHeader` option to `true` to remove the authorization header before forwarding the request to your service. (Default value is `false`.)

View file

@ -42,13 +42,22 @@ labels:
- "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=250000" - "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=250000"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Sets the maximum request body to 2Mb # Sets the maximum request body to 2Mb
[http.middlewares] [http.middlewares]
[http.middlewares.limit.buffering] [http.middlewares.limit.buffering]
maxRequestBodyBytes = 250000 maxRequestBodyBytes = 250000
``` ```
```yaml tab="File (YAML)"
# Sets the maximum request body to 2Mb
http:
middlewares:
limit:
buffering:
maxRequestBodyBytes: 250000
```
## Configuration Options ## Configuration Options
### `maxRequestBodyBytes` ### `maxRequestBodyBytes`
@ -77,7 +86,7 @@ You can have the Buffering middleware replay the request with the help of the `r
!!! example "Retries once in case of a network error" !!! example "Retries once in case of a network error"
``` ```toml
retryExpression = "IsNetworkError() && Attempts() < 2" retryExpression = "IsNetworkError() && Attempts() < 2"
``` ```

View file

@ -108,7 +108,7 @@ labels:
- "http.services.service1.loadbalancer.server.port=80" - "http.services.service1.loadbalancer.server.port=80"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# ... # ...
[http.routers] [http.routers]
[http.routers.router1] [http.routers.router1]
@ -135,3 +135,43 @@ labels:
[[http.services.service1.loadBalancer.servers]] [[http.services.service1.loadBalancer.servers]]
url = "http://127.0.0.1:80" url = "http://127.0.0.1:80"
``` ```
```yaml tab="File (YAML)"
# ...
http:
routers:
router1:
service: service1
middlewares:
- secured
rule: "Host(`mydomain`)"
middlewares:
secured:
chain:
middlewares:
- https-only
- known-ips
- auth-users
auth-users:
basicAuth:
users:
- "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"
https-only:
redirectScheme:
scheme: https
known-ips:
ipWhiteList:
sourceRange:
- "192.168.1.7"
- "127.0.0.1/32"
services:
service1:
loadBalancer:
servers:
- url: "http://127.0.0.1:80"
```

View file

@ -52,13 +52,22 @@ labels:
- "traefik.http.middlewares.latency-check.circuitbreaker.expression=LatencyAtQuantileMS(50.0) > 100" - "traefik.http.middlewares.latency-check.circuitbreaker.expression=LatencyAtQuantileMS(50.0) > 100"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Latency Check # Latency Check
[http.middlewares] [http.middlewares]
[http.middlewares.latency-check.circuitBreaker] [http.middlewares.latency-check.circuitBreaker]
expression = "LatencyAtQuantileMS(50.0) > 100" expression = "LatencyAtQuantileMS(50.0) > 100"
``` ```
```yaml tab="File (YAML)"
# Latency Check
http:
middlewares:
latency-check:
circuitBreaker:
expression: "LatencyAtQuantileMS(50.0) > 100"
```
## Possible States ## Possible States
There are three possible states for your circuit breaker: There are three possible states for your circuit breaker:

View file

@ -37,12 +37,20 @@ labels:
- "traefik.http.middlewares.test-compress.compress=true" - "traefik.http.middlewares.test-compress.compress=true"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Enable gzip compression # Enable gzip compression
[http.middlewares] [http.middlewares]
[http.middlewares.test-compress.compress] [http.middlewares.test-compress.compress]
``` ```
```yaml tab="File (YAML)"
# Enable gzip compression
http:
middlewares:
test-compress:
compress: {}
```
## Notes ## Notes
Responses are compressed when: Responses are compressed when:

View file

@ -38,7 +38,7 @@ labels:
- "traefik.http.middlewares.test-auth.digestauth.users=test:traefik:a2688e031edb4be6a3797f3882655c05,test2:traefik:518845800f9e2bfb1f1f740ec24f074e" - "traefik.http.middlewares.test-auth.digestauth.users=test:traefik:a2688e031edb4be6a3797f3882655c05,test2:traefik:518845800f9e2bfb1f1f740ec24f074e"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
[http.middlewares] [http.middlewares]
[http.middlewares.test-auth.digestAuth] [http.middlewares.test-auth.digestAuth]
users = [ users = [
@ -47,6 +47,16 @@ labels:
] ]
``` ```
```yaml tab="File (YAML)"
http:
middlewares:
test-auth:
digestAuth:
users:
- "test:traefik:a2688e031edb4be6a3797f3882655c05"
- "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"
```
!!! tip !!! tip
Use `htdigest` to generate passwords. Use `htdigest` to generate passwords.
@ -115,12 +125,21 @@ labels:
} }
``` ```
```toml tab="File" ```toml tab="File (TOML)"
[http.middlewares.my-auth.digestAuth] [http.middlewares.my-auth.digestAuth]
# ... # ...
headerField = "X-WebAuth-User" headerField = "X-WebAuth-User"
``` ```
```yaml tab="File (YAML)"
http:
middlewares:
my-auth:
digestAuth:
# ...
headerField: "X-WebAuth-User"
```
### `removeHeader` ### `removeHeader`
Set the `removeHeader` option to `true` to remove the authorization header before forwarding the request to your service. (Default value is `false`.) Set the `removeHeader` option to `true` to remove the authorization header before forwarding the request to your service. (Default value is `false`.)

View file

@ -49,7 +49,7 @@ labels:
- "traefik.http.middlewares.test-errorpage.errors.query=/{status}.html" - "traefik.http.middlewares.test-errorpage.errors.query=/{status}.html"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Custom Error Page for 5XX # Custom Error Page for 5XX
[http.middlewares] [http.middlewares]
[http.middlewares.test-errorpage.errors] [http.middlewares.test-errorpage.errors]
@ -61,6 +61,21 @@ labels:
# ... definition of error-handler-service and my-service # ... definition of error-handler-service and my-service
``` ```
```yaml tab="File (YAML)"
# Custom Error Page for 5XX
http:
middlewares:
test-errorpage:
errors:
status:
- "500-599"
service: serviceError
query: "/{status}.html"
[http.services]
# ... definition of error-handler-service and my-service
```
!!! note !!! note
In this example, the error page URL is based on the status code (`query=/{status}.html)`. In this example, the error page URL is based on the status code (`query=/{status}.html)`.

View file

@ -69,7 +69,7 @@ labels:
- "traefik.http.middlewares.test-auth.forwardauth.trustForwardHeader=true" - "traefik.http.middlewares.test-auth.forwardauth.trustForwardHeader=true"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Forward authentication to authserver.com # Forward authentication to authserver.com
[http.middlewares] [http.middlewares]
[http.middlewares.test-auth.forwardAuth] [http.middlewares.test-auth.forwardAuth]
@ -84,6 +84,24 @@ labels:
key = "path/to/foo.key" key = "path/to/foo.key"
``` ```
```yaml tab="File (YAML)"
# Forward authentication to authserver.com
http:
middlewares:
test-auth:
forwardAuth:
address: "https://authserver.com/auth"
trustForwardHeader: true
authResponseHeaders:
- "X-Auth-User"
- "X-Secret"
tls:
ca: "path/to/local.crt"
caOptional: true
cert: "path/to/foo.cert"
key: "path/to/foo.key"
```
## Configuration Options ## Configuration Options
### `address` ### `address`

View file

@ -16,7 +16,7 @@ Add the `X-Script-Name` header to the proxied request and the `X-Custom-Response
```yaml tab="Docker" ```yaml tab="Docker"
labels: labels:
- "traefik.http.middlewares.testHeader.headers.customrequestheaders.X-Script-Name=test" - "traefik.http.middlewares.testHeader.headers.customrequestheaders.X-Script-Name=test"
- "traefik.http.middlewares.testHeader.headers.customresponseheaders.X-Custom-Response-Header=True" - "traefik.http.middlewares.testHeader.headers.customresponseheaders.X-Custom-Response-Header=value"
``` ```
```yaml tab="Kubernetes" ```yaml tab="Kubernetes"
@ -29,29 +29,40 @@ spec:
customRequestHeaders: customRequestHeaders:
X-Script-Name: "test" X-Script-Name: "test"
customResponseHeaders: customResponseHeaders:
X-Custom-Response-Header: "True" X-Custom-Response-Header: "value"
``` ```
```json tab="Marathon" ```json tab="Marathon"
"labels": { "labels": {
"traefik.http.middlewares.testheader.headers.customrequestheaders.X-Script-Name": "test", "traefik.http.middlewares.testheader.headers.customrequestheaders.X-Script-Name": "test",
"traefik.http.middlewares.testheader.headers.customresponseheaders.X-Custom-Response-Header": "True" "traefik.http.middlewares.testheader.headers.customresponseheaders.X-Custom-Response-Header": "value"
} }
``` ```
```yaml tab="Rancher" ```yaml tab="Rancher"
labels: labels:
- "traefik.http.middlewares.testheader.headers.customrequestheaders.X-Script-Name=test" - "traefik.http.middlewares.testheader.headers.customrequestheaders.X-Script-Name=test"
- "traefik.http.middlewares.testheader.headers.customresponseheaders.X-Custom-Response-Header=True" - "traefik.http.middlewares.testheader.headers.customresponseheaders.X-Custom-Response-Header=value"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
[http.middlewares] [http.middlewares]
[http.middlewares.testHeader.headers] [http.middlewares.testHeader.headers]
[http.middlewares.testHeader.headers.customRequestHeaders] [http.middlewares.testHeader.headers.customRequestHeaders]
X-Script-Name = "test" X-Script-Name = "test"
[http.middlewares.testHeader.headers.customResponseHeaders] [http.middlewares.testHeader.headers.customResponseHeaders]
X-Custom-Response-Header = "True" X-Custom-Response-Header = "value"
```
```yaml tab="File (YAML)"
http:
middlewares:
testHeader:
headers:
customRequestHeaders:
X-Script-Name: "test"
customResponseHeaders:
X-Custom-Response-Header: "value"
``` ```
### Adding and Removing Headers ### Adding and Removing Headers
@ -86,7 +97,7 @@ labels:
} }
``` ```
```toml tab="File" ```toml tab="File (TOML)"
[http.middlewares] [http.middlewares]
[http.middlewares.testHeader.headers] [http.middlewares.testHeader.headers]
[http.middlewares.testHeader.headers.customRequestHeaders] [http.middlewares.testHeader.headers.customRequestHeaders]
@ -96,6 +107,18 @@ labels:
X-Custom-Response-Header = "" # Removes X-Custom-Response-Header = "" # Removes
``` ```
```yaml tab="File (YAML)"
http:
middlewares:
testHeader:
headers:
customRequestHeaders:
X-Script-Name: "test" # Adds
X-Custom-Request-Header: "" # Removes
customResponseHeaders:
X-Custom-Response-Header: "" # Removes
```
### Using Security Headers ### Using Security Headers
Security related headers (HSTS headers, SSL redirection, Browser XSS filter, etc) can be added and configured per frontend in a similar manner to the custom headers above. Security related headers (HSTS headers, SSL redirection, Browser XSS filter, etc) can be added and configured per frontend in a similar manner to the custom headers above.
@ -131,13 +154,22 @@ labels:
} }
``` ```
```toml tab="File" ```toml tab="File (TOML)"
[http.middlewares] [http.middlewares]
[http.middlewares.testHeader.headers] [http.middlewares.testHeader.headers]
FrameDeny = true FrameDeny = true
SSLRedirect = true SSLRedirect = true
``` ```
```yaml tab="File (YAML)"
http:
middlewares:
testHeader:
headers:
FrameDeny: true
SSLRedirect: true
```
### CORS Headers ### CORS Headers
CORS (Cross-Origin Resource Sharing) headers can be added and configured per frontend in a similar manner to the custom headers above. CORS (Cross-Origin Resource Sharing) headers can be added and configured per frontend in a similar manner to the custom headers above.
@ -184,7 +216,7 @@ labels:
} }
``` ```
```toml tab="File" ```toml tab="File (TOML)"
[http.middlewares] [http.middlewares]
[http.middlewares.testHeader.headers] [http.middlewares.testHeader.headers]
accessControlAllowMethods= ["GET", "OPTIONS", "PUT"] accessControlAllowMethods= ["GET", "OPTIONS", "PUT"]
@ -193,6 +225,20 @@ labels:
addVaryHeader = true addVaryHeader = true
``` ```
```yaml tab="File (YAML)"
http:
middlewares:
testHeader:
headers:
accessControlAllowMethod:
- GET
- OPTIONS
- PUT
accessControlAllowOrigin: "origin-list-or-null"
accessControlMaxAge: 100
addVaryHeader: true
```
## Configuration Options ## Configuration Options
### General ### General

View file

@ -39,13 +39,24 @@ labels:
- "traefik.http.middlewares.test-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.1.7" - "traefik.http.middlewares.test-ipwhitelist.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.1.7"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Accepts request from defined IP # Accepts request from defined IP
[http.middlewares] [http.middlewares]
[http.middlewares.test-ipwhitelist.ipWhiteList] [http.middlewares.test-ipwhitelist.ipWhiteList]
sourceRange = ["127.0.0.1/32", "192.168.1.7"] sourceRange = ["127.0.0.1/32", "192.168.1.7"]
``` ```
```yaml tab="File (YAML)"
# Accepts request from defined IP
http:
middlewares:
test-ipwhitelist:
ipWhiteList:
sourceRange:
- "127.0.0.1/32"
- "192.168.1.7"
```
## Configuration Options ## Configuration Options
### `sourceRange` ### `sourceRange`
@ -108,7 +119,7 @@ The `depth` option tells Traefik to use the `X-Forwarded-For` header and take th
} }
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Whitelisting Based on `X-Forwarded-For` with `depth=2` # Whitelisting Based on `X-Forwarded-For` with `depth=2`
[http.middlewares] [http.middlewares]
[http.middlewares.test-ipwhitelist.ipWhiteList] [http.middlewares.test-ipwhitelist.ipWhiteList]
@ -117,6 +128,19 @@ The `depth` option tells Traefik to use the `X-Forwarded-For` header and take th
depth = 2 depth = 2
``` ```
```yaml tab="File (YAML)"
# Whitelisting Based on `X-Forwarded-For` with `depth=2`
http:
middlewares:
test-ipwhitelist:
ipWhiteList:
sourceRange:
- "127.0.0.1/32"
- "192.168.1.7"
ipStrategy:
depth: 2
```
!!! note !!! note
- If `depth` is greater than the total number of IPs in `X-Forwarded-For`, then the client IP will be empty. - If `depth` is greater than the total number of IPs in `X-Forwarded-For`, then the client IP will be empty.
@ -171,10 +195,22 @@ labels:
} }
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Exclude from `X-Forwarded-For` # Exclude from `X-Forwarded-For`
[http.middlewares] [http.middlewares]
[http.middlewares.test-ipwhitelist.ipWhiteList] [http.middlewares.test-ipwhitelist.ipWhiteList]
[http.middlewares.test-ipwhitelist.ipWhiteList.ipStrategy] [http.middlewares.test-ipwhitelist.ipWhiteList.ipStrategy]
excludedIPs = ["127.0.0.1/32", "192.168.1.7"] excludedIPs = ["127.0.0.1/32", "192.168.1.7"]
``` ```
```yaml tab="File (YAML)"
# Exclude from `X-Forwarded-For`
http:
middlewares:
test-ipwhitelist:
ipWhiteList:
ipStrategy:
excludedIPs:
- "127.0.0.1/32"
- "192.168.1.7"
```

View file

@ -37,23 +37,32 @@ labels:
- "traefik.http.middlewares.test-maxconn.maxconn.amount=10" - "traefik.http.middlewares.test-maxconn.maxconn.amount=10"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Limiting to 10 simultaneous connections # Limiting to 10 simultaneous connections
[http.middlewares] [http.middlewares]
[http.middlewares.test-maxconn.maxConn] [http.middlewares.test-maxconn.maxConn]
amount = 10 amount = 10
``` ```
```yaml tab="File (YAML)"
# Limiting to 10 simultaneous connections
http:
middlewares:
test-maxconn:
maxConn:
amount: 10
```
## Configuration Options ## Configuration Options
### `amount` ### `amount`
The `amount` option defines the maximum amount of allowed simultaneous connections. The `amount` option defines the maximum amount of allowed simultaneous connections.
The middleware will return an `HTTP 429 Too Many Requests` if there are already `amount` requests in progress (based on the same `extractorfunc` strategy). The middleware will return an `HTTP 429 Too Many Requests` if there are already `amount` requests in progress (based on the same `extractorFunc` strategy).
### extractorfunc ### `extractorFunc`
The `extractorfunc` defines the strategy used to categorize requests. The `extractorFunc` defines the strategy used to categorize requests.
The possible values are: The possible values are:

View file

@ -79,8 +79,8 @@ labels:
- "traefik.http.router.router1.middlewares=foo-add-prefix@rancher" - "traefik.http.router.router1.middlewares=foo-add-prefix@rancher"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# As Toml Configuration File # As TOML Configuration File
[http.routers] [http.routers]
[http.routers.router1] [http.routers.router1]
service = "myService" service = "myService"
@ -99,6 +99,28 @@ labels:
url = "http://127.0.0.1:80" url = "http://127.0.0.1:80"
``` ```
```yaml tab="File (YAML)"
# As YAML Configuration File
http:
routers:
router1:
service: myService
middlewares:
- "foo-add-prefix"
rule: "Host(`example.com`)"
middlewares:
foo-add-prefix:
addPrefix:
prefix: "/foo"
services:
service1:
loadBalancer:
servers:
- url: "http://127.0.0.1:80"
```
## Provider Namespace ## Provider Namespace
When you declare a middleware, it lives in its provider namespace. When you declare a middleware, it lives in its provider namespace.
@ -124,12 +146,20 @@ and therefore this specification would be ignored even if present.
Declaring the add-foo-prefix in the file provider. Declaring the add-foo-prefix in the file provider.
```toml ```toml tab="File (TOML)"
[http.middlewares] [http.middlewares]
[http.middlewares.add-foo-prefix.addPrefix] [http.middlewares.add-foo-prefix.addPrefix]
prefix = "/foo" prefix = "/foo"
``` ```
```yaml tab="File (YAML)"
http:
middlewares:
add-foo-prefix:
addPrefix:
prefix: "/foo"
```
Using the add-foo-prefix middleware from other providers: Using the add-foo-prefix middleware from other providers:
```yaml tab="Docker" ```yaml tab="Docker"

View file

@ -39,13 +39,22 @@ labels:
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.pem=true" - "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.pem=true"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Pass the escaped pem in the `X-Forwarded-Tls-Client-Cert` header. # Pass the escaped pem in the `X-Forwarded-Tls-Client-Cert` header.
[http.middlewares] [http.middlewares]
[http.middlewares.test-passtlsclientcert.passTLSClientCert] [http.middlewares.test-passtlsclientcert.passTLSClientCert]
pem = true pem = true
``` ```
```yaml tab="File (YAML)"
# Pass the escaped pem in the `X-Forwarded-Tls-Client-Cert` header.
http:
middlewares:
test-passtlsclientcert:
passTLSClientCert:
pem: true
```
??? example "Pass the escaped pem in the `X-Forwarded-Tls-Client-Cert` header" ??? example "Pass the escaped pem in the `X-Forwarded-Tls-Client-Cert` header"
```yaml tab="Docker" ```yaml tab="Docker"
@ -144,7 +153,7 @@ labels:
} }
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Pass all the available info in the `X-Forwarded-Tls-Client-Cert-Info` header # Pass all the available info in the `X-Forwarded-Tls-Client-Cert-Info` header
[http.middlewares] [http.middlewares]
[http.middlewares.test-passtlsclientcert.passTLSClientCert] [http.middlewares.test-passtlsclientcert.passTLSClientCert]
@ -170,6 +179,34 @@ labels:
domainComponent = true domainComponent = true
``` ```
```yaml tab="File (YAML)"
# Pass all the available info in the `X-Forwarded-Tls-Client-Cert-Info` header
http:
middlewares:
test-passtlsclientcert:
passTLSClientCert:
info:
notAfter: true
notBefore: true
sans: true
subject:
country: true
province: true
locality: true
organization: true
commonName: true
serialNumber: true
domainComponent: true
issuer:
country: true
province: true
locality: true
organization: true
commonName: true
serialNumber: true
domainComponent: true
```
## Configuration Options ## Configuration Options
### General ### General

View file

@ -73,12 +73,12 @@ labels:
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Here, an average of 5 requests every 3 seconds is allowed and an average of 100 requests every 10 seconds. # Here, an average of 5 requests every 3 seconds is allowed and an average of 100 requests every 10 seconds.
# These can "burst" up to 10 and 200 in each period, respectively. # These can "burst" up to 10 and 200 in each period, respectively.
[http.middlewares] [http.middlewares]
[http.middlewares.test-ratelimit.rateLimit] [http.middlewares.test-ratelimit.rateLimit]
extractorfunc = "client.ip" extractorFunc = "client.ip"
[http.middlewares.test-ratelimit.rateLimit.rateSet.rate0] [http.middlewares.test-ratelimit.rateLimit.rateSet.rate0]
period = "10s" period = "10s"
@ -91,11 +91,30 @@ labels:
burst = 10 burst = 10
``` ```
```yaml tab="File (YAML)"
# Here, an average of 5 requests every 3 seconds is allowed and an average of 100 requests every 10 seconds.
# These can "burst" up to 10 and 200 in each period, respectively.
http:
middlewares:
test-ratelimit:
rateLimit:
extractorFunc: "client.ip"
rateSet:
rate0:
period: "10s"
average: 100
burst: 200
rate1:
period: "3s"
average: 5
burst: 10
```
## Configuration Options ## Configuration Options
### `extractorfunc` ### `extractorFunc`
The `extractorfunc` option defines the strategy used to categorize requests. The `extractorFunc` option defines the strategy used to categorize requests.
The possible values are: The possible values are:

View file

@ -42,7 +42,7 @@ labels:
- "traefik.http.middlewares.test-redirectregex.redirectregex.replacement=http://mydomain/$1" - "traefik.http.middlewares.test-redirectregex.redirectregex.replacement=http://mydomain/$1"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Redirect with domain replacement # Redirect with domain replacement
[http.middlewares] [http.middlewares]
[http.middlewares.test-redirectregex.redirectRegex] [http.middlewares.test-redirectregex.redirectRegex]
@ -50,6 +50,16 @@ labels:
replacement = "http://mydomain/$1" replacement = "http://mydomain/$1"
``` ```
```yaml tab="File (YAML)"
# Redirect with domain replacement
http:
middlewares:
test-redirectregex:
redirectRegex:
regex: "^http://localhost/(.*)"
replacement: "http://mydomain/$1"
```
## Configuration Options ## Configuration Options
### `permanent` ### `permanent`

View file

@ -38,13 +38,22 @@ labels:
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.scheme=https" - "traefik.http.middlewares.test-redirectscheme.redirectscheme.scheme=https"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Redirect to https # Redirect to https
[http.middlewares] [http.middlewares]
[http.middlewares.test-redirectscheme.redirectScheme] [http.middlewares.test-redirectscheme.redirectScheme]
scheme = "https" scheme = "https"
``` ```
```yaml tab="File (YAML)"
# Redirect to https
http:
middlewares:
test-redirectscheme:
redirectScheme:
scheme: https
```
## Configuration Options ## Configuration Options
### `permanent` ### `permanent`

View file

@ -38,13 +38,22 @@ labels:
- "traefik.http.middlewares.test-replacepath.replacepath.path=/foo" - "traefik.http.middlewares.test-replacepath.replacepath.path=/foo"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Replace the path by /foo # Replace the path by /foo
[http.middlewares] [http.middlewares]
[http.middlewares.test-replacepath.replacePath] [http.middlewares.test-replacepath.replacePath]
path = "/foo" path = "/foo"
``` ```
```yaml tab="File (YAML)"
# Replace the path by /foo
http:
middlewares:
test-replacepath:
replacePath:
path: "/foo"
```
## Configuration Options ## Configuration Options
### General ### General

View file

@ -42,7 +42,7 @@ labels:
- "traefik.http.middlewares.test-replacepathregex.replacepathregex.replacement=/bar/$1" - "traefik.http.middlewares.test-replacepathregex.replacepathregex.replacement=/bar/$1"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Redirect with domain replacement # Redirect with domain replacement
[http.middlewares] [http.middlewares]
[http.middlewares.test-replacepathregex.replacePathRegex] [http.middlewares.test-replacepathregex.replacePathRegex]
@ -50,6 +50,16 @@ labels:
replacement = "/bar/$1" replacement = "/bar/$1"
``` ```
```yaml tab="File (YAML)"
# Redirect with domain replacement
http:
middlewares:
test-replacepathregex:
replacePathRegex:
regex: "^/foo/(.*)"
replacement: "/bar/$1"
```
## Configuration Options ## Configuration Options
### General ### General

View file

@ -38,13 +38,22 @@ labels:
- "traefik.http.middlewares.test-retry.retry.attempts=4" - "traefik.http.middlewares.test-retry.retry.attempts=4"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Retry to send request 4 times # Retry to send request 4 times
[http.middlewares] [http.middlewares]
[http.middlewares.test-retry.retry] [http.middlewares.test-retry.retry]
attempts = 4 attempts = 4
``` ```
```yaml tab="File (YAML)"
# Retry to send request 4 times
http:
middlewares:
test-retry:
retry:
attempts: 4
```
## Configuration Options ## Configuration Options
### `attempts` ### `attempts`

View file

@ -40,13 +40,24 @@ labels:
- "traefik.http.middlewares.test-stripprefix.stripprefix.prefixes=/foobar, /fiibar" - "traefik.http.middlewares.test-stripprefix.stripprefix.prefixes=/foobar, /fiibar"
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Strip prefix /foobar and /fiibar # Strip prefix /foobar and /fiibar
[http.middlewares] [http.middlewares]
[http.middlewares.test-stripprefix.stripPrefix] [http.middlewares.test-stripprefix.stripPrefix]
prefixes = ["/foobar", "/fiibar"] prefixes = ["/foobar", "/fiibar"]
``` ```
```yaml tab="File (YAML)"
# Strip prefix /foobar and /fiibar
http:
middlewares:
test-stripprefix:
stripPrefix:
prefixes:
- "/foobar"
- "/fiibar"
```
## Configuration Options ## Configuration Options
### General ### General

View file

@ -38,11 +38,20 @@ labels:
- "traefik.http.middlewares.test-stripprefixregex.stripprefixregex.regex=^/foo/(.*)", - "traefik.http.middlewares.test-stripprefixregex.stripprefixregex.regex=^/foo/(.*)",
``` ```
```toml tab="File" ```toml tab="File (TOML)"
# Replace the path by /foo # Replace the path by /foo
[http.middlewares] [http.middlewares]
[http.middlewares.test-stripprefixregex.stripPrefixRegex] [http.middlewares.test-stripprefixregex.stripPrefixRegex]
regex: "^/foo/(.*)" regex = "^/foo/(.*)"
```
```yaml tab="File (YAML)"
# Replace the path by /foo
http:
middlewares:
test-stripprefixregex:
stripPrefixRegex:
regex: "^/foo/(.*)"
``` ```
## Configuration Options ## Configuration Options

View file

@ -9,12 +9,16 @@ By default, logs are written to stdout, in text format.
To enable the access logs: To enable the access logs:
```toml tab="File" ```toml tab="File (TOML)"
[accessLog] [accessLog]
``` ```
```yaml tab="File (YAML)"
accessLog: {}
```
```bash tab="CLI" ```bash tab="CLI"
--accesslog --accesslog=true
``` ```
### `filePath` ### `filePath`
@ -41,16 +45,23 @@ To write the logs in an asynchronous fashion, specify a `bufferingSize` option.
This option represents the number of log lines Traefik will keep in memory before writing them to the selected output. This option represents the number of log lines Traefik will keep in memory before writing them to the selected output.
In some cases, this option can greatly help performances. In some cases, this option can greatly help performances.
```toml tab="File" ```toml tab="File (TOML)"
# Configuring a buffer of 100 lines # Configuring a buffer of 100 lines
[accessLog] [accessLog]
filePath = "/path/to/access.log" filePath = "/path/to/access.log"
bufferingSize = 100 bufferingSize = 100
``` ```
```yaml tab="File (YAML)"
# Configuring a buffer of 100 lines
accessLog:
filePath: "/path/to/access.log"
bufferingSize: 100
```
```bash tab="CLI" ```bash tab="CLI"
# Configuring a buffer of 100 lines # Configuring a buffer of 100 lines
--accesslog --accesslog=true
--accesslog.filepath="/path/to/access.log" --accesslog.filepath="/path/to/access.log"
--accesslog.bufferingsize=100 --accesslog.bufferingsize=100
``` ```
@ -66,11 +77,11 @@ The available filters are:
- `retryAttempts`, to keep the access logs when at least one retry has happened - `retryAttempts`, to keep the access logs when at least one retry has happened
- `minDuration`, to keep access logs when requests take longer than the specified duration - `minDuration`, to keep access logs when requests take longer than the specified duration
```toml tab="File" ```toml tab="File (TOML)"
# Configuring Multiple Filters # Configuring Multiple Filters
[accessLog] [accessLog]
filePath = "/path/to/access.log" filePath = "/path/to/access.log"
format = "json" format = "json"
[accessLog.filters] [accessLog.filters]
statusCodes = ["200", "300-302"] statusCodes = ["200", "300-302"]
@ -78,9 +89,22 @@ format = "json"
minDuration = "10ms" minDuration = "10ms"
``` ```
```yaml tab="File (YAML)"
# Configuring Multiple Filters
accessLog:
filePath: "/path/to/access.log"
format: json
filters:
statusCodes:
- "200"
- "300-302"
retryAttempts: true
minDuration: "10ms"
```
```bash tab="CLI" ```bash tab="CLI"
# Configuring Multiple Filters # Configuring Multiple Filters
--accesslog --accesslog=true
--accesslog.filepath="/path/to/access.log" --accesslog.filepath="/path/to/access.log"
--accesslog.format="json" --accesslog.format="json"
--accesslog.filters.statuscodes="200, 300-302" --accesslog.filters.statuscodes="200, 300-302"
@ -100,7 +124,7 @@ Each field can be set to:
The `defaultMode` for `fields.header` is `drop`. The `defaultMode` for `fields.header` is `drop`.
```toml tab="File" ```toml tab="File (TOML)"
# Limiting the Logs to Specific Fields # Limiting the Logs to Specific Fields
[accessLog] [accessLog]
filePath = "/path/to/access.log" filePath = "/path/to/access.log"
@ -121,9 +145,27 @@ The `defaultMode` for `fields.header` is `drop`.
"Content-Type" = "keep" "Content-Type" = "keep"
``` ```
```yaml tab="File (YAML)"
# Limiting the Logs to Specific Fields
accessLog:
filePath: "/path/to/access.log"
format: json
fields:
defaultMode: keep
fields:
names:
ClientUsername: drop
headers:
defaultMode: keep
names:
- User-Agent: redact
- Authorization: drop
- Content-Type: keep
```
```bash tab="CLI" ```bash tab="CLI"
# Limiting the Logs to Specific Fields # Limiting the Logs to Specific Fields
--accesslog --accesslog=true
--accesslog.filepath="/path/to/access.log" --accesslog.filepath="/path/to/access.log"
--accesslog.format="json" --accesslog.format="json"
--accesslog.fields.defaultmode="keep" --accesslog.fields.defaultmode="keep"

View file

@ -16,12 +16,18 @@ Traefik logs concern everything that happens to Traefik itself (startup, configu
By default, the logs are written to the standard output. By default, the logs are written to the standard output.
You can configure a file path instead using the `filePath` option. You can configure a file path instead using the `filePath` option.
```toml tab="File" ```toml tab="File (TOML)"
# Writing Logs to a File # Writing Logs to a File
[log] [log]
filePath = "/path/to/traefik.log" filePath = "/path/to/traefik.log"
``` ```
```yaml tab="File (YAML)"
# Writing Logs to a File
log:
filePath: "/path/to/traefik.log"
```
```bash tab="CLI" ```bash tab="CLI"
# Writing Logs to a File # Writing Logs to a File
--log.filePath="/path/to/traefik.log" --log.filePath="/path/to/traefik.log"
@ -31,11 +37,18 @@ You can configure a file path instead using the `filePath` option.
By default, the logs use a text format (`common`), but you can also ask for the `json` format in the `format` option. By default, the logs use a text format (`common`), but you can also ask for the `json` format in the `format` option.
```toml tab="File" ```toml tab="File (TOML)"
# Writing Logs to a File, in JSON # Writing Logs to a File, in JSON
[log] [log]
filePath = "/path/to/log-file.log" filePath = "/path/to/log-file.log"
format = "json" format = "json"
```
```yaml tab="File (YAML)"
# Writing Logs to a File, in JSON
log:
filePath: "/path/to/log-file.log"
format: json
``` ```
```bash tab="CLI" ```bash tab="CLI"
@ -48,11 +61,16 @@ By default, the logs use a text format (`common`), but you can also ask for the
By default, the `level` is set to `ERROR`. Alternative logging levels are `DEBUG`, `PANIC`, `FATAL`, `ERROR`, `WARN`, and `INFO`. By default, the `level` is set to `ERROR`. Alternative logging levels are `DEBUG`, `PANIC`, `FATAL`, `ERROR`, `WARN`, and `INFO`.
```toml tab="File" ```toml tab="File (TOML)"
[log] [log]
level = "DEBUG" level = "DEBUG"
``` ```
```yaml tab="File (YAML)"
log:
level: DEBUG
```
```bash tab="CLI" ```bash tab="CLI"
--log.level="DEBUG" --log.level="DEBUG"
``` ```

View file

@ -7,9 +7,13 @@ To enable the DataDog:
[metrics.dataDog] [metrics.dataDog]
``` ```
```yaml tab="File (YAML)"
metrics:
dataDog: {}
```
```bash tab="CLI" ```bash tab="CLI"
--metrics --metrics.datadog=true
--metrics.datadog
``` ```
#### `address` #### `address`
@ -24,14 +28,13 @@ Address instructs exporter to send metrics to datadog-agent at this address.
address = "127.0.0.1:8125" address = "127.0.0.1:8125"
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
dataDog: dataDog:
address: 127.0.0.1:8125 address: 127.0.0.1:8125
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.datadog.address="127.0.0.1:8125" --metrics.datadog.address="127.0.0.1:8125"
``` ```
@ -47,14 +50,13 @@ Enable metrics on entry points.
addEntryPointsLabels = true addEntryPointsLabels = true
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
dataDog: dataDog:
addEntryPointsLabels: true addEntryPointsLabels: true
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.datadog.addEntryPointsLabels=true --metrics.datadog.addEntryPointsLabels=true
``` ```
@ -70,14 +72,13 @@ Enable metrics on services.
addServicesLabels = true addServicesLabels = true
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
dataDog: dataDog:
addServicesLabels: true addServicesLabels: true
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.datadog.addServicesLabels=true --metrics.datadog.addServicesLabels=true
``` ```
@ -93,14 +94,13 @@ The interval used by the exporter to push metrics to datadog-agent.
pushInterval = 10s pushInterval = 10s
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
dataDog: dataDog:
pushInterval: 10s pushInterval: 10s
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.datadog.pushInterval=10s --metrics.datadog.pushInterval=10s
``` ```

View file

@ -7,14 +7,13 @@ To enable the InfluxDB:
[metrics.influxdb] [metrics.influxdb]
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
influxdb: {} influxdb: {}
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics --metrics.influxdb=true
--metrics.influxdb
``` ```
#### `address` #### `address`
@ -29,14 +28,13 @@ Address instructs exporter to send metrics to influxdb at this address.
address = "localhost:8089" address = "localhost:8089"
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
influxdb: influxdb:
address: localhost:8089 address: localhost:8089
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.influxdb.address="localhost:8089" --metrics.influxdb.address="localhost:8089"
``` ```
@ -52,14 +50,13 @@ InfluxDB's address protocol (udp or http).
protocol = "upd" protocol = "upd"
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
influxdb: influxdb:
protocol: udp protocol: udp
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.influxdb.protocol="udp" --metrics.influxdb.protocol="udp"
``` ```
@ -75,14 +72,13 @@ InfluxDB database used when protocol is http.
database = "" database = ""
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
influxdb: influxdb:
database: "" database: ""
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.influxdb.database="" --metrics.influxdb.database=""
``` ```
@ -98,14 +94,13 @@ InfluxDB retention policy used when protocol is http.
retentionPolicy = "" retentionPolicy = ""
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
influxdb: influxdb:
retentionPolicy: "" retentionPolicy: ""
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.influxdb.retentionPolicy="" --metrics.influxdb.retentionPolicy=""
``` ```
@ -121,14 +116,13 @@ InfluxDB username (only with http).
username = "" username = ""
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
influxdb: influxdb:
username: "" username: ""
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.influxdb.username="" --metrics.influxdb.username=""
``` ```
@ -144,14 +138,13 @@ InfluxDB password (only with http).
password = "" password = ""
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
influxdb: influxdb:
password: "" password: ""
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.influxdb.password="" --metrics.influxdb.password=""
``` ```
@ -167,14 +160,13 @@ Enable metrics on entry points.
addEntryPointsLabels = true addEntryPointsLabels = true
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
influxdb: influxdb:
addEntryPointsLabels: true addEntryPointsLabels: true
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.influxdb.addEntryPointsLabels=true --metrics.influxdb.addEntryPointsLabels=true
``` ```
@ -190,14 +182,13 @@ Enable metrics on services.
addServicesLabels = true addServicesLabels = true
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
influxdb: influxdb:
addServicesLabels: true addServicesLabels: true
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.influxdb.addServicesLabels=true --metrics.influxdb.addServicesLabels=true
``` ```
@ -213,13 +204,12 @@ The interval used by the exporter to push metrics to influxdb.
pushInterval = 10s pushInterval = 10s
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
influxdb: influxdb:
pushInterval: 10s pushInterval: 10s
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.influxdb.pushInterval=10s --metrics.influxdb.pushInterval=10s
``` ```

View file

@ -17,10 +17,10 @@ To enable metrics:
[metrics] [metrics]
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: {} metrics: {}
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics --metrics=true
``` ```

View file

@ -7,14 +7,13 @@ To enable the Prometheus:
[metrics.prometheus] [metrics.prometheus]
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
prometheus: {} prometheus: {}
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics --metrics.prometheus=true
--metrics.prometheus
``` ```
#### `buckets` #### `buckets`
@ -29,7 +28,7 @@ Buckets for latency metrics.
buckets = [0.1,0.3,1.2,5.0] buckets = [0.1,0.3,1.2,5.0]
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
prometheus: prometheus:
buckets: buckets:
@ -40,7 +39,6 @@ metrics:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.prometheus.buckets=0.100000, 0.300000, 1.200000, 5.000000 --metrics.prometheus.buckets=0.100000, 0.300000, 1.200000, 5.000000
``` ```
@ -56,14 +54,13 @@ Enable metrics on entry points.
addEntryPointsLabels = true addEntryPointsLabels = true
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
prometheus: prometheus:
addEntryPointsLabels: true addEntryPointsLabels: true
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.prometheus.addEntryPointsLabels=true --metrics.prometheus.addEntryPointsLabels=true
``` ```
@ -79,13 +76,12 @@ Enable metrics on services.
addServicesLabels = true addServicesLabels = true
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
prometheus: prometheus:
addServicesLabels: true addServicesLabels: true
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.prometheus.addServicesLabels=true --metrics.prometheus.addServicesLabels=true
``` ```

View file

@ -7,14 +7,13 @@ To enable the Statsd:
[metrics.statsd] [metrics.statsd]
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
statsd: {} statsd: {}
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics --metrics.statsd=true
--metrics.statsd
``` ```
#### `address` #### `address`
@ -29,14 +28,13 @@ Address instructs exporter to send metrics to statsd at this address.
address = "localhost:8125" address = "localhost:8125"
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
statsd: statsd:
address: localhost:8125 address: localhost:8125
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.statsd.address="localhost:8125" --metrics.statsd.address="localhost:8125"
``` ```
@ -52,14 +50,13 @@ Enable metrics on entry points.
addEntryPointsLabels = true addEntryPointsLabels = true
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
statsd: statsd:
addEntryPointsLabels: true addEntryPointsLabels: true
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.statsd.addEntryPointsLabels=true --metrics.statsd.addEntryPointsLabels=true
``` ```
@ -75,14 +72,13 @@ Enable metrics on services.
addServicesLabels = true addServicesLabels = true
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
statsd: statsd:
addServicesLabels: true addServicesLabels: true
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.statsd.addServicesLabels=true --metrics.statsd.addServicesLabels=true
``` ```
@ -98,13 +94,12 @@ The interval used by the exporter to push metrics to statsD.
pushInterval = 10s pushInterval = 10s
``` ```
```yaml tab="File (TOML)" ```yaml tab="File (YAML)"
metrics: metrics:
statsd: statsd:
pushInterval: 10s pushInterval: 10s
``` ```
```bash tab="CLI" ```bash tab="CLI"
--metrics
--metrics.statsd.pushInterval=10s --metrics.statsd.pushInterval=10s
``` ```

View file

@ -13,8 +13,7 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing --tracing.datadog=true
--tracing.datadog
``` ```
#### `localAgentHostPort` #### `localAgentHostPort`
@ -36,7 +35,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.datadog.localAgentHostPort="127.0.0.1:8126" --tracing.datadog.localAgentHostPort="127.0.0.1:8126"
``` ```
@ -59,7 +57,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.datadog.debug=true --tracing.datadog.debug=true
``` ```
@ -82,7 +79,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.datadog.globalTag="sample" --tracing.datadog.globalTag="sample"
``` ```
@ -106,6 +102,5 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.datadog.prioritySampling=true --tracing.datadog.prioritySampling=true
``` ```

View file

@ -13,8 +13,7 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing --tracing.haystack=true
--tracing.haystack
``` ```
#### `localAgentHost` #### `localAgentHost`
@ -36,7 +35,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.haystack.localAgentHost="127.0.0.1" --tracing.haystack.localAgentHost="127.0.0.1"
``` ```
@ -59,7 +57,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.haystack.localAgentPort=42699 --tracing.haystack.localAgentPort=42699
``` ```
@ -82,7 +79,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.haystack.globalTag="sample:test" --tracing.haystack.globalTag="sample:test"
``` ```
@ -105,7 +101,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.haystack.traceIDHeaderName="sample" --tracing.haystack.traceIDHeaderName="sample"
``` ```
@ -128,7 +123,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.haystack.parentIDHeaderName="sample" --tracing.haystack.parentIDHeaderName="sample"
``` ```
@ -151,7 +145,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.haystack.spanIDHeaderName=sample:test --tracing.haystack.spanIDHeaderName=sample:test
``` ```
@ -175,6 +168,5 @@ tracing:
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.haystack.baggagePrefixHeaderName="sample" --tracing.haystack.baggagePrefixHeaderName="sample"
``` ```

View file

@ -13,8 +13,7 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing --tracing.instana=true
--tracing.instana
``` ```
#### `localAgentHost` #### `localAgentHost`
@ -36,7 +35,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.instana.localAgentHost="127.0.0.1" --tracing.instana.localAgentHost="127.0.0.1"
``` ```
@ -59,7 +57,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.instana.localAgentPort=42699 --tracing.instana.localAgentPort=42699
``` ```
@ -89,6 +86,5 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.instana.logLevel="info" --tracing.instana.logLevel="info"
``` ```

View file

@ -13,8 +13,7 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing --tracing.jaeger=true
--tracing.jaeger
``` ```
!!! warning !!! warning
@ -40,7 +39,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.jaeger.samplingServerURL="http://localhost:5778/sampling" --tracing.jaeger.samplingServerURL="http://localhost:5778/sampling"
``` ```
@ -63,7 +61,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.jaeger.samplingType="const" --tracing.jaeger.samplingType="const"
``` ```
@ -92,7 +89,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.jaeger.samplingParam="1.0" --tracing.jaeger.samplingParam="1.0"
``` ```
@ -115,7 +111,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.jaeger.localAgentHostPort="127.0.0.1:6831" --tracing.jaeger.localAgentHostPort="127.0.0.1:6831"
``` ```
@ -138,7 +133,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.jaeger.gen128Bit --tracing.jaeger.gen128Bit
``` ```
@ -165,7 +159,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.jaeger.propagation="jaeger" --tracing.jaeger.propagation="jaeger"
``` ```
@ -189,7 +182,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.jaeger.traceContextHeaderName="uber-trace-id" --tracing.jaeger.traceContextHeaderName="uber-trace-id"
``` ```
@ -214,7 +206,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.jaeger.collector.endpoint="http://127.0.0.1:14268/api/traces?format=jaeger.thrift" --tracing.jaeger.collector.endpoint="http://127.0.0.1:14268/api/traces?format=jaeger.thrift"
``` ```
@ -238,7 +229,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.jaeger.collector.user="my-user" --tracing.jaeger.collector.user="my-user"
``` ```
@ -262,6 +252,5 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.jaeger.collector.password="my-password" --tracing.jaeger.collector.password="my-password"
``` ```

View file

@ -30,7 +30,7 @@ tracing: {}
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing --tracing=true
``` ```
### Common Options ### Common Options
@ -52,7 +52,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.serviceName="traefik" --tracing.serviceName="traefik"
``` ```
@ -76,6 +75,5 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.spanNameLimit=150 --tracing.spanNameLimit=150
``` ```

View file

@ -13,8 +13,7 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing --tracing.zipkin=true
--tracing.zipkin
``` ```
#### `httpEndpoint` #### `httpEndpoint`
@ -36,7 +35,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.zipkin.httpEndpoint="http://localhost:9411/api/v1/spans" --tracing.zipkin.httpEndpoint="http://localhost:9411/api/v1/spans"
``` ```
@ -59,7 +57,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.zipkin.debug=true --tracing.zipkin.debug=true
``` ```
@ -82,7 +79,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.zipkin.sameSpan=true --tracing.zipkin.sameSpan=true
``` ```
@ -105,7 +101,6 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.zipkin.id128Bit=false --tracing.zipkin.id128Bit=false
``` ```
@ -128,6 +123,5 @@ tracing:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--tracing
--tracing.zipkin.sampleRate="0.2" --tracing.zipkin.sampleRate="0.2"
``` ```

View file

@ -29,12 +29,16 @@ would be to apply the following protection mechanisms:
To enable the API handler: To enable the API handler:
```toml tab="File" ```toml tab="File (TOML)"
[api] [api]
``` ```
```yaml tab="File (YAML)"
api: {}
```
```bash tab="CLI" ```bash tab="CLI"
--api --api=true
``` ```
### `dashboard` ### `dashboard`
@ -43,13 +47,18 @@ _Optional, Default=true_
Enable the dashboard. More about the dashboard features [here](./dashboard.md). Enable the dashboard. More about the dashboard features [here](./dashboard.md).
```toml tab="File" ```toml tab="File (TOML)"
[api] [api]
dashboard = true dashboard = true
``` ```
```yaml tab="File (YAML)"
api:
dashboard: true
```
```bash tab="CLI" ```bash tab="CLI"
--api.dashboard --api.dashboard=true
``` ```
### `debug` ### `debug`
@ -58,11 +67,16 @@ _Optional, Default=false_
Enable additional endpoints for debugging and profiling, served under `/debug/`. Enable additional endpoints for debugging and profiling, served under `/debug/`.
```toml tab="File" ```toml tab="File (TOML)"
[api] [api]
debug = true debug = true
``` ```
```yaml tab="File (YAML)"
api:
debug: true
```
```bash tab="CLI" ```bash tab="CLI"
--api.debug=true --api.debug=true
``` ```

View file

@ -29,37 +29,38 @@ By default, the dashboard is available on `/` on port `:8080`.
To enable the dashboard, you need to enable Traefik's API. To enable the dashboard, you need to enable Traefik's API.
??? example "Using the Command Line" ```toml tab="File (TOML)"
[api]
# Dashboard
#
# Optional
# Default: true
#
dashboard = true
```
| Option | Values | Default Value | ```yaml tab="File (YAML)"
| --------------- | --------------- | --------------------: | api:
| --api | \[true\|false\] | false | # Dashboard
| --api.dashboard | \[true\|false\] | true when api is true | #
# Optional
# Default: true
#
dashboard: true
```
{!more-on-command-line.md!} ```bash tab="CLI"
# Dashboard
#
# Optional
# Default: true
#
--api.dashboard=true
```
??? example "Using the Configuration File" {!more-on-command-line.md!}
```toml {!more-on-configuration-file.md!}
[api]
# Dashboard
#
# Optional
# Default: true
#
dashboard = true
```
{!more-on-configuration-file.md!}
??? example "Using a Key/Value Store"
| Key | Values | Default Value |
| ------------- | --------------- | --------------------: |
| api | \[true\|false\] | false |
| api.dashboard | \[true\|false\] | true when api is true |
{!more-on-key-value-store.md!}
!!! tip "Did You Know?" !!! tip "Did You Know?"
The API provides more features than the Dashboard. The API provides more features than the Dashboard.

View file

@ -7,9 +7,17 @@ Checking the Health of Your Traefik Instances
??? example "Enabling /ping" ??? example "Enabling /ping"
```toml ```toml tab="File (TOML)"
[ping] [ping]
``` ```
```yaml tab="File (YAML)"
ping: {}
```
```bash tab="CLI"
--ping=true
```
| Path | Method | Description | | Path | Method | Description |
|---------|---------------|-----------------------------------------------------------------------------------------------------| |---------|---------------|-----------------------------------------------------------------------------------------------------|

View file

@ -26,7 +26,7 @@ Attach labels to your containers and let Traefik do the rest!
``` ```
```bash tab="CLI" ```bash tab="CLI"
--providers.docker --providers.docker=true
``` ```
Attaching labels to containers (in your docker compose file) Attaching labels to containers (in your docker compose file)
@ -65,7 +65,7 @@ Attach labels to your containers and let Traefik do the rest!
```bash tab="CLI" ```bash tab="CLI"
--providers.docker.endpoint="tcp://127.0.0.1:2375" --providers.docker.endpoint="tcp://127.0.0.1:2375"
--providers.docker.swarmMode --providers.docker.swarmMode=true
``` ```
Attach labels to services (not to containers) while in Swarm mode (in your docker compose file) Attach labels to services (not to containers) while in Swarm mode (in your docker compose file)
@ -331,7 +331,7 @@ providers:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--providers.docker.swarmMode --providers.docker.swarmMode=true
# ... # ...
``` ```

View file

@ -20,7 +20,7 @@ providers:
``` ```
```bash tab="CLI" ```bash tab="CLI"
--providers.kubernetesingress --providers.kubernetesingress=true
``` ```
The provider then watches for incoming ingresses events, such as the example below, and derives the corresponding dynamic configuration from it, which in turn will create the resulting routers, services, handlers, etc. The provider then watches for incoming ingresses events, such as the example below, and derives the corresponding dynamic configuration from it, which in turn will create the resulting routers, services, handlers, etc.

View file

@ -21,7 +21,7 @@ See also [Marathon user guide](../user-guides/marathon.md).
``` ```
```bash tab="CLI" ```bash tab="CLI"
--providers.marathon --providers.marathon=true
``` ```
Attaching labels to marathon applications Attaching labels to marathon applications

View file

@ -28,7 +28,7 @@ Attach labels to your services and let Traefik do the rest!
``` ```
```bash tab="CLI" ```bash tab="CLI"
--providers.rancher --providers.rancher=true
``` ```
Attaching labels to services Attaching labels to services
@ -55,6 +55,8 @@ Attach labels to your services and let Traefik do the rest!
--8<-- "content/providers/rancher.txt" --8<-- "content/providers/rancher.txt"
``` ```
List of all available labels for the [dynamic](../reference/dynamic-configuration/rancher.md) configuration references.
### `exposedByDefault` ### `exposedByDefault`
_Optional, Default=true_ _Optional, Default=true_

View file

@ -11,7 +11,7 @@
enableServiceHealthFilter = true enableServiceHealthFilter = true
# Defines the polling interval (in seconds). # Defines the polling interval (in seconds).
refreshSeconds = true refreshSeconds = 15
# Poll the Rancher metadata service for changes every `rancher.refreshSeconds`, which is less accurate # Poll the Rancher metadata service for changes every `rancher.refreshSeconds`, which is less accurate
intervalPoll = false intervalPoll = false

View file

@ -1,5 +1,5 @@
# Enable Rancher Provider. # Enable Rancher Provider.
--providers.rancher --providers.rancher=true
# Expose Rancher services by default in Traefik. # Expose Rancher services by default in Traefik.
--providers.rancher.exposedByDefault=true --providers.rancher.exposedByDefault=true
@ -11,7 +11,7 @@
--providers.rancher.enableServiceHealthFilter=true --providers.rancher.enableServiceHealthFilter=true
# Defines the polling interval (in seconds). # Defines the polling interval (in seconds).
--providers.rancher.refreshSeconds=true --providers.rancher.refreshSeconds=15
# Poll the Rancher metadata service for changes every `rancher.refreshSeconds`, which is less accurate # Poll the Rancher metadata service for changes every `rancher.refreshSeconds`, which is less accurate
--providers.rancher.intervalPoll=false --providers.rancher.intervalPoll=false

View file

@ -12,7 +12,7 @@ providers:
enableServiceHealthFilter: true enableServiceHealthFilter: true
# Defines the polling interval (in seconds). # Defines the polling interval (in seconds).
refreshSeconds: true refreshSeconds: 15
# Poll the Rancher metadata service for changes every `rancher.refreshSeconds`, which is less accurate # Poll the Rancher metadata service for changes every `rancher.refreshSeconds`, which is less accurate
intervalPoll: false intervalPoll: false

View file

@ -0,0 +1,177 @@
- "traefik.http.middlewares.middleware00.addprefix.prefix=foobar"
- "traefik.http.middlewares.middleware01.basicauth.headerfield=foobar"
- "traefik.http.middlewares.middleware01.basicauth.realm=foobar"
- "traefik.http.middlewares.middleware01.basicauth.removeheader=true"
- "traefik.http.middlewares.middleware01.basicauth.users=foobar, foobar"
- "traefik.http.middlewares.middleware01.basicauth.usersfile=foobar"
- "traefik.http.middlewares.middleware02.buffering.maxrequestbodybytes=42"
- "traefik.http.middlewares.middleware02.buffering.maxresponsebodybytes=42"
- "traefik.http.middlewares.middleware02.buffering.memrequestbodybytes=42"
- "traefik.http.middlewares.middleware02.buffering.memresponsebodybytes=42"
- "traefik.http.middlewares.middleware02.buffering.retryexpression=foobar"
- "traefik.http.middlewares.middleware03.chain.middlewares=foobar, foobar"
- "traefik.http.middlewares.middleware04.circuitbreaker.expression=foobar"
- "traefik.http.middlewares.middleware05.compress=true"
- "traefik.http.middlewares.middleware06.digestauth.headerfield=foobar"
- "traefik.http.middlewares.middleware06.digestauth.realm=foobar"
- "traefik.http.middlewares.middleware06.digestauth.removeheader=true"
- "traefik.http.middlewares.middleware06.digestauth.users=foobar, foobar"
- "traefik.http.middlewares.middleware06.digestauth.usersfile=foobar"
- "traefik.http.middlewares.middleware07.errors.query=foobar"
- "traefik.http.middlewares.middleware07.errors.service=foobar"
- "traefik.http.middlewares.middleware07.errors.status=foobar, foobar"
- "traefik.http.middlewares.middleware08.forwardauth.address=foobar"
- "traefik.http.middlewares.middleware08.forwardauth.authresponseheaders=foobar, foobar"
- "traefik.http.middlewares.middleware08.forwardauth.tls.ca=foobar"
- "traefik.http.middlewares.middleware08.forwardauth.tls.caoptional=true"
- "traefik.http.middlewares.middleware08.forwardauth.tls.cert=foobar"
- "traefik.http.middlewares.middleware08.forwardauth.tls.insecureskipverify=true"
- "traefik.http.middlewares.middleware08.forwardauth.tls.key=foobar"
- "traefik.http.middlewares.middleware08.forwardauth.trustforwardheader=true"
- "traefik.http.middlewares.middleware09.headers.accesscontrolallowcredentials=true"
- "traefik.http.middlewares.middleware09.headers.accesscontrolallowheaders=foobar, foobar"
- "traefik.http.middlewares.middleware09.headers.accesscontrolallowmethods=foobar, foobar"
- "traefik.http.middlewares.middleware09.headers.accesscontrolalloworigin=foobar"
- "traefik.http.middlewares.middleware09.headers.accesscontrolexposeheaders=foobar, foobar"
- "traefik.http.middlewares.middleware09.headers.accesscontrolmaxage=42"
- "traefik.http.middlewares.middleware09.headers.addvaryheader=true"
- "traefik.http.middlewares.middleware09.headers.allowedhosts=foobar, foobar"
- "traefik.http.middlewares.middleware09.headers.browserxssfilter=true"
- "traefik.http.middlewares.middleware09.headers.contentsecuritypolicy=foobar"
- "traefik.http.middlewares.middleware09.headers.contenttypenosniff=true"
- "traefik.http.middlewares.middleware09.headers.custombrowserxssvalue=foobar"
- "traefik.http.middlewares.middleware09.headers.customframeoptionsvalue=foobar"
- "traefik.http.middlewares.middleware09.headers.customrequestheaders.name0=foobar"
- "traefik.http.middlewares.middleware09.headers.customrequestheaders.name1=foobar"
- "traefik.http.middlewares.middleware09.headers.customresponseheaders.name0=foobar"
- "traefik.http.middlewares.middleware09.headers.customresponseheaders.name1=foobar"
- "traefik.http.middlewares.middleware09.headers.forcestsheader=true"
- "traefik.http.middlewares.middleware09.headers.framedeny=true"
- "traefik.http.middlewares.middleware09.headers.hostsproxyheaders=foobar, foobar"
- "traefik.http.middlewares.middleware09.headers.isdevelopment=true"
- "traefik.http.middlewares.middleware09.headers.publickey=foobar"
- "traefik.http.middlewares.middleware09.headers.referrerpolicy=foobar"
- "traefik.http.middlewares.middleware09.headers.sslforcehost=true"
- "traefik.http.middlewares.middleware09.headers.sslhost=foobar"
- "traefik.http.middlewares.middleware09.headers.sslproxyheaders.name0=foobar"
- "traefik.http.middlewares.middleware09.headers.sslproxyheaders.name1=foobar"
- "traefik.http.middlewares.middleware09.headers.sslredirect=true"
- "traefik.http.middlewares.middleware09.headers.ssltemporaryredirect=true"
- "traefik.http.middlewares.middleware09.headers.stsincludesubdomains=true"
- "traefik.http.middlewares.middleware09.headers.stspreload=true"
- "traefik.http.middlewares.middleware09.headers.stsseconds=42"
- "traefik.http.middlewares.middleware10.ipwhitelist.ipstrategy.depth=42"
- "traefik.http.middlewares.middleware10.ipwhitelist.ipstrategy.excludedips=foobar, foobar"
- "traefik.http.middlewares.middleware10.ipwhitelist.sourcerange=foobar, foobar"
- "traefik.http.middlewares.middleware11.maxconn.amount=42"
- "traefik.http.middlewares.middleware11.maxconn.extractorfunc=foobar"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.commonname=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.country=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.domaincomponent=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.locality=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.organization=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.province=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.serialnumber=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.notafter=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.notbefore=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.sans=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.commonname=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.country=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.domaincomponent=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.locality=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.organization=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.province=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.serialnumber=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.pem=true"
- "traefik.http.middlewares.middleware13.redirectregex.permanent=true"
- "traefik.http.middlewares.middleware13.redirectregex.regex=foobar"
- "traefik.http.middlewares.middleware13.redirectregex.replacement=foobar"
- "traefik.http.middlewares.middleware14.redirectscheme.permanent=true"
- "traefik.http.middlewares.middleware14.redirectscheme.port=foobar"
- "traefik.http.middlewares.middleware14.redirectscheme.scheme=foobar"
- "traefik.http.middlewares.middleware15.replacepath.path=foobar"
- "traefik.http.middlewares.middleware16.replacepathregex.regex=foobar"
- "traefik.http.middlewares.middleware16.replacepathregex.replacement=foobar"
- "traefik.http.middlewares.middleware17.retry.attempts=42"
- "traefik.http.middlewares.middleware18.stripprefix.prefixes=foobar, foobar"
- "traefik.http.middlewares.middleware19.stripprefixregex.regex=foobar, foobar"
- "traefik.http.routers.router0.entrypoints=foobar, foobar"
- "traefik.http.routers.router0.middlewares=foobar, foobar"
- "traefik.http.routers.router0.priority=42"
- "traefik.http.routers.router0.rule=foobar"
- "traefik.http.routers.router0.service=foobar"
- "traefik.http.routers.router0.tls=true"
- "traefik.http.routers.router0.tls.certresolver=foobar"
- "traefik.http.routers.router0.tls.domains[0].main=foobar"
- "traefik.http.routers.router0.tls.domains[0].sans=foobar, foobar"
- "traefik.http.routers.router0.tls.domains[1].main=foobar"
- "traefik.http.routers.router0.tls.domains[1].sans=foobar, foobar"
- "traefik.http.routers.router0.tls.options=foobar"
- "traefik.http.routers.router1.entrypoints=foobar, foobar"
- "traefik.http.routers.router1.middlewares=foobar, foobar"
- "traefik.http.routers.router1.priority=42"
- "traefik.http.routers.router1.rule=foobar"
- "traefik.http.routers.router1.service=foobar"
- "traefik.http.routers.router1.tls=true"
- "traefik.http.routers.router1.tls.certresolver=foobar"
- "traefik.http.routers.router1.tls.domains[0].main=foobar"
- "traefik.http.routers.router1.tls.domains[0].sans=foobar, foobar"
- "traefik.http.routers.router1.tls.domains[1].main=foobar"
- "traefik.http.routers.router1.tls.domains[1].sans=foobar, foobar"
- "traefik.http.routers.router1.tls.options=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.headers.name0=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.headers.name1=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.hostname=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.interval=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.path=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.port=42"
- "traefik.http.services.service0.loadbalancer.healthcheck.scheme=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.timeout=foobar"
- "traefik.http.services.service0.loadbalancer.passhostheader=true"
- "traefik.http.services.service0.loadbalancer.responseforwarding.flushinterval=foobar"
- "traefik.http.services.service0.loadbalancer.stickiness=true"
- "traefik.http.services.service0.loadbalancer.stickiness.cookiename=foobar"
- "traefik.http.services.service0.loadbalancer.stickiness.httponlycookie=true"
- "traefik.http.services.service0.loadbalancer.stickiness.securecookie=true"
- "traefik.http.services.service0.loadbalancer.server.port=foobar"
- "traefik.http.services.service0.loadbalancer.server.scheme=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.headers.name0=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.headers.name1=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.hostname=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.interval=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.path=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.port=42"
- "traefik.http.services.service1.loadbalancer.healthcheck.scheme=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.timeout=foobar"
- "traefik.http.services.service1.loadbalancer.passhostheader=true"
- "traefik.http.services.service1.loadbalancer.responseforwarding.flushinterval=foobar"
- "traefik.http.services.service1.loadbalancer.stickiness=true"
- "traefik.http.services.service1.loadbalancer.stickiness.cookiename=foobar"
- "traefik.http.services.service1.loadbalancer.stickiness.httponlycookie=true"
- "traefik.http.services.service1.loadbalancer.stickiness.securecookie=true"
- "traefik.http.services.service1.loadbalancer.server.port=foobar"
- "traefik.http.services.service1.loadbalancer.server.scheme=foobar"
- "traefik.tcp.routers.tcprouter0.entrypoints=foobar, foobar"
- "traefik.tcp.routers.tcprouter0.rule=foobar"
- "traefik.tcp.routers.tcprouter0.service=foobar"
- "traefik.tcp.routers.tcprouter0.tls=true"
- "traefik.tcp.routers.tcprouter0.tls.certresolver=foobar"
- "traefik.tcp.routers.tcprouter0.tls.domains[0].main=foobar"
- "traefik.tcp.routers.tcprouter0.tls.domains[0].sans=foobar, foobar"
- "traefik.tcp.routers.tcprouter0.tls.domains[1].main=foobar"
- "traefik.tcp.routers.tcprouter0.tls.domains[1].sans=foobar, foobar"
- "traefik.tcp.routers.tcprouter0.tls.options=foobar"
- "traefik.tcp.routers.tcprouter0.tls.passthrough=true"
- "traefik.tcp.routers.tcprouter1.entrypoints=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.rule=foobar"
- "traefik.tcp.routers.tcprouter1.service=foobar"
- "traefik.tcp.routers.tcprouter1.tls=true"
- "traefik.tcp.routers.tcprouter1.tls.certresolver=foobar"
- "traefik.tcp.routers.tcprouter1.tls.domains[0].main=foobar"
- "traefik.tcp.routers.tcprouter1.tls.domains[0].sans=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.tls.domains[1].main=foobar"
- "traefik.tcp.routers.tcprouter1.tls.domains[1].sans=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.tls.options=foobar"
- "traefik.tcp.routers.tcprouter1.tls.passthrough=true"
- "traefik.tcp.services.tcpservice0.loadbalancer.server.port=foobar"
- "traefik.tcp.services.tcpservice1.loadbalancer.server.port=foobar"

View file

@ -7,6 +7,6 @@ The labels are case insensitive.
```yaml ```yaml
labels: labels:
--8<-- "content/reference/dynamic-configuration/docker.yml" --8<-- "content/reference/dynamic-configuration/docker.yml"
--8<-- "content/reference/dynamic-configuration/labels.yml" --8<-- "content/reference/dynamic-configuration/docker-labels.yml"
``` ```

View file

@ -1,3 +1,3 @@
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.docker.network=foobar" - "traefik.docker.network=foobar"
- "traefik.docker.lbswarm=true" - "traefik.docker.lbswarm=true"

View file

@ -8,6 +8,15 @@
priority = 42 priority = 42
[http.routers.Router0.tls] [http.routers.Router0.tls]
options = "foobar" options = "foobar"
certResolver = "foobar"
[[http.routers.Router0.tls.domains]]
main = "foobar"
sans = ["foobar", "foobar"]
[[http.routers.Router0.tls.domains]]
main = "foobar"
sans = ["foobar", "foobar"]
[http.routers.Router1] [http.routers.Router1]
entryPoints = ["foobar", "foobar"] entryPoints = ["foobar", "foobar"]
middlewares = ["foobar", "foobar"] middlewares = ["foobar", "foobar"]
@ -16,6 +25,15 @@
priority = 42 priority = 42
[http.routers.Router1.tls] [http.routers.Router1.tls]
options = "foobar" options = "foobar"
certResolver = "foobar"
[[http.routers.Router1.tls.domains]]
main = "foobar"
sans = ["foobar", "foobar"]
[[http.routers.Router1.tls.domains]]
main = "foobar"
sans = ["foobar", "foobar"]
[http.services] [http.services]
[http.services.Service0] [http.services.Service0]
[http.services.Service0.loadBalancer] [http.services.Service0.loadBalancer]
@ -186,31 +204,31 @@
commonName = true commonName = true
serialNumber = true serialNumber = true
domainComponent = true domainComponent = true
[http.middlewares.Middleware14] [http.middlewares.Middleware13]
[http.middlewares.Middleware14.redirectRegex] [http.middlewares.Middleware13.redirectRegex]
regex = "foobar" regex = "foobar"
replacement = "foobar" replacement = "foobar"
permanent = true permanent = true
[http.middlewares.Middleware15] [http.middlewares.Middleware14]
[http.middlewares.Middleware15.redirectScheme] [http.middlewares.Middleware14.redirectScheme]
scheme = "foobar" scheme = "foobar"
port = "foobar" port = "foobar"
permanent = true permanent = true
[http.middlewares.Middleware16] [http.middlewares.Middleware15]
[http.middlewares.Middleware16.replacePath] [http.middlewares.Middleware15.replacePath]
path = "foobar" path = "foobar"
[http.middlewares.Middleware17] [http.middlewares.Middleware16]
[http.middlewares.Middleware17.replacePathRegex] [http.middlewares.Middleware16.replacePathRegex]
regex = "foobar" regex = "foobar"
replacement = "foobar" replacement = "foobar"
[http.middlewares.Middleware18] [http.middlewares.Middleware17]
[http.middlewares.Middleware18.retry] [http.middlewares.Middleware17.retry]
attempts = 42 attempts = 42
[http.middlewares.Middleware19] [http.middlewares.Middleware18]
[http.middlewares.Middleware19.stripPrefix] [http.middlewares.Middleware18.stripPrefix]
prefixes = ["foobar", "foobar"] prefixes = ["foobar", "foobar"]
[http.middlewares.Middleware20] [http.middlewares.Middleware19]
[http.middlewares.Middleware20.stripPrefixRegex] [http.middlewares.Middleware19.stripPrefixRegex]
regex = ["foobar", "foobar"] regex = ["foobar", "foobar"]
[tcp] [tcp]
@ -222,6 +240,15 @@
[tcp.routers.TCPRouter0.tls] [tcp.routers.TCPRouter0.tls]
passthrough = true passthrough = true
options = "foobar" options = "foobar"
certResolver = "foobar"
[[tcp.routers.TCPRouter0.tls.domains]]
main = "foobar"
sans = ["foobar", "foobar"]
[[tcp.routers.TCPRouter0.tls.domains]]
main = "foobar"
sans = ["foobar", "foobar"]
[tcp.routers.TCPRouter1] [tcp.routers.TCPRouter1]
entryPoints = ["foobar", "foobar"] entryPoints = ["foobar", "foobar"]
service = "foobar" service = "foobar"
@ -229,6 +256,15 @@
[tcp.routers.TCPRouter1.tls] [tcp.routers.TCPRouter1.tls]
passthrough = true passthrough = true
options = "foobar" options = "foobar"
certResolver = "foobar"
[[tcp.routers.TCPRouter1.tls.domains]]
main = "foobar"
sans = ["foobar", "foobar"]
[[tcp.routers.TCPRouter1.tls.domains]]
main = "foobar"
sans = ["foobar", "foobar"]
[tcp.services] [tcp.services]
[tcp.services.TCPService0] [tcp.services.TCPService0]
[tcp.services.TCPService0.loadBalancer] [tcp.services.TCPService0.loadBalancer]
@ -265,14 +301,14 @@
sniStrict = true sniStrict = true
[tls.options.Options0.clientAuth] [tls.options.Options0.clientAuth]
caFiles = ["foobar", "foobar"] caFiles = ["foobar", "foobar"]
clientAuthType = "VerifyClientCertIfGiven" clientAuthType = "foobar"
[tls.options.Options1] [tls.options.Options1]
minVersion = "foobar" minVersion = "foobar"
cipherSuites = ["foobar", "foobar"] cipherSuites = ["foobar", "foobar"]
sniStrict = true sniStrict = true
[tls.options.Options1.clientAuth] [tls.options.Options1.clientAuth]
caFiles = ["foobar", "foobar"] caFiles = ["foobar", "foobar"]
clientAuthType = "VerifyClientCertIfGiven" clientAuthType = "foobar"
[tls.stores] [tls.stores]
[tls.stores.Store0] [tls.stores.Store0]
[tls.stores.Store0.defaultCertificate] [tls.stores.Store0.defaultCertificate]

View file

@ -12,6 +12,16 @@ http:
priority: 42 priority: 42
tls: tls:
options: foobar options: foobar
certResolver: foobar
domains:
- main: foobar
sans:
- foobar
- foobar
- main: foobar
sans:
- foobar
- foobar
Router1: Router1:
entryPoints: entryPoints:
- foobar - foobar
@ -24,6 +34,16 @@ http:
priority: 42 priority: 42
tls: tls:
options: foobar options: foobar
certResolver: foobar
domains:
- main: foobar
sans:
- foobar
- foobar
- main: foobar
sans:
- foobar
- foobar
services: services:
Service0: Service0:
loadBalancer: loadBalancer:
@ -212,32 +232,32 @@ http:
commonName: true commonName: true
serialNumber: true serialNumber: true
domainComponent: true domainComponent: true
Middleware14: Middleware13:
redirectRegex: redirectRegex:
regex: foobar regex: foobar
replacement: foobar replacement: foobar
permanent: true permanent: true
Middleware15: Middleware14:
redirectScheme: redirectScheme:
scheme: foobar scheme: foobar
port: foobar port: foobar
permanent: true permanent: true
Middleware16: Middleware15:
replacePath: replacePath:
path: foobar path: foobar
Middleware17: Middleware16:
replacePathRegex: replacePathRegex:
regex: foobar regex: foobar
replacement: foobar replacement: foobar
Middleware18: Middleware17:
retry: retry:
attempts: 42 attempts: 42
Middleware19: Middleware18:
stripPrefix: stripPrefix:
prefixes: prefixes:
- foobar - foobar
- foobar - foobar
Middleware20: Middleware19:
stripPrefixRegex: stripPrefixRegex:
regex: regex:
- foobar - foobar
@ -253,6 +273,16 @@ tcp:
tls: tls:
passthrough: true passthrough: true
options: foobar options: foobar
certResolver: foobar
domains:
- main: foobar
sans:
- foobar
- foobar
- main: foobar
sans:
- foobar
- foobar
TCPRouter1: TCPRouter1:
entryPoints: entryPoints:
- foobar - foobar
@ -262,6 +292,16 @@ tcp:
tls: tls:
passthrough: true passthrough: true
options: foobar options: foobar
certResolver: foobar
domains:
- main: foobar
sans:
- foobar
- foobar
- main: foobar
sans:
- foobar
- foobar
services: services:
TCPService0: TCPService0:
loadBalancer: loadBalancer:
@ -295,7 +335,7 @@ tls:
caFiles: caFiles:
- foobar - foobar
- foobar - foobar
clientAuthType: VerifyClientCertIfGiven clientAuthType: foobar
sniStrict: true sniStrict: true
Options1: Options1:
minVersion: foobar minVersion: foobar
@ -306,7 +346,7 @@ tls:
caFiles: caFiles:
- foobar - foobar
- foobar - foobar
clientAuthType: VerifyClientCertIfGiven clientAuthType: foobar
sniStrict: true sniStrict: true
stores: stores:
Store0: Store0:

View file

@ -1,157 +0,0 @@
- "traefik.http.middlewares.middleware00.addprefix.prefix=foobar"
- "traefik.http.middlewares.middleware01.basicauth.headerfield=foobar"
- "traefik.http.middlewares.middleware01.basicauth.realm=foobar"
- "traefik.http.middlewares.middleware01.basicauth.removeheader=true"
- "traefik.http.middlewares.middleware01.basicauth.users=foobar, foobar"
- "traefik.http.middlewares.middleware01.basicauth.usersfile=foobar"
- "traefik.http.middlewares.middleware02.buffering.maxrequestbodybytes=42"
- "traefik.http.middlewares.middleware02.buffering.maxresponsebodybytes=42"
- "traefik.http.middlewares.middleware02.buffering.memrequestbodybytes=42"
- "traefik.http.middlewares.middleware02.buffering.memresponsebodybytes=42"
- "traefik.http.middlewares.middleware02.buffering.retryexpression=foobar"
- "traefik.http.middlewares.middleware03.chain.middlewares=foobar, foobar"
- "traefik.http.middlewares.middleware04.circuitbreaker.expression=foobar"
- "traefik.http.middlewares.middleware05.compress=true"
- "traefik.http.middlewares.middleware06.digestauth.headerfield=foobar"
- "traefik.http.middlewares.middleware06.digestauth.realm=foobar"
- "traefik.http.middlewares.middleware06.digestauth.removeheader=true"
- "traefik.http.middlewares.middleware06.digestauth.users=foobar, foobar"
- "traefik.http.middlewares.middleware06.digestauth.usersfile=foobar"
- "traefik.http.middlewares.middleware07.errors.query=foobar"
- "traefik.http.middlewares.middleware07.errors.service=foobar"
- "traefik.http.middlewares.middleware07.errors.status=foobar, foobar"
- "traefik.http.middlewares.middleware08.forwardauth.address=foobar"
- "traefik.http.middlewares.middleware08.forwardauth.authresponseheaders=foobar, foobar"
- "traefik.http.middlewares.middleware08.forwardauth.tls.ca=foobar"
- "traefik.http.middlewares.middleware08.forwardauth.tls.caoptional=true"
- "traefik.http.middlewares.middleware08.forwardauth.tls.cert=foobar"
- "traefik.http.middlewares.middleware08.forwardauth.tls.insecureskipverify=true"
- "traefik.http.middlewares.middleware08.forwardauth.tls.key=foobar"
- "traefik.http.middlewares.middleware08.forwardauth.trustforwardheader=true"
- "traefik.http.middlewares.middleware09.headers.accesscontrolallowcredentials=true"
- "traefik.http.middlewares.middleware09.headers.accesscontrolallowheaders=foobar, foobar"
- "traefik.http.middlewares.middleware09.headers.accesscontrolallowmethods=foobar, foobar"
- "traefik.http.middlewares.middleware09.headers.accesscontrolalloworigin=foobar"
- "traefik.http.middlewares.middleware09.headers.accesscontrolexposeheaders=foobar, foobar"
- "traefik.http.middlewares.middleware09.headers.accesscontrolmaxage=42"
- "traefik.http.middlewares.middleware09.headers.addvaryheader=true"
- "traefik.http.middlewares.middleware09.headers.allowedhosts=foobar, foobar"
- "traefik.http.middlewares.middleware09.headers.browserxssfilter=true"
- "traefik.http.middlewares.middleware09.headers.contentsecuritypolicy=foobar"
- "traefik.http.middlewares.middleware09.headers.contenttypenosniff=true"
- "traefik.http.middlewares.middleware09.headers.custombrowserxssvalue=foobar"
- "traefik.http.middlewares.middleware09.headers.customframeoptionsvalue=foobar"
- "traefik.http.middlewares.middleware09.headers.customrequestheaders.name0=foobar"
- "traefik.http.middlewares.middleware09.headers.customrequestheaders.name1=foobar"
- "traefik.http.middlewares.middleware09.headers.customresponseheaders.name0=foobar"
- "traefik.http.middlewares.middleware09.headers.customresponseheaders.name1=foobar"
- "traefik.http.middlewares.middleware09.headers.forcestsheader=true"
- "traefik.http.middlewares.middleware09.headers.framedeny=true"
- "traefik.http.middlewares.middleware09.headers.hostsproxyheaders=foobar, foobar"
- "traefik.http.middlewares.middleware09.headers.isdevelopment=true"
- "traefik.http.middlewares.middleware09.headers.publickey=foobar"
- "traefik.http.middlewares.middleware09.headers.referrerpolicy=foobar"
- "traefik.http.middlewares.middleware09.headers.sslforcehost=true"
- "traefik.http.middlewares.middleware09.headers.sslhost=foobar"
- "traefik.http.middlewares.middleware09.headers.sslproxyheaders.name0=foobar"
- "traefik.http.middlewares.middleware09.headers.sslproxyheaders.name1=foobar"
- "traefik.http.middlewares.middleware09.headers.sslredirect=true"
- "traefik.http.middlewares.middleware09.headers.ssltemporaryredirect=true"
- "traefik.http.middlewares.middleware09.headers.stsincludesubdomains=true"
- "traefik.http.middlewares.middleware09.headers.stspreload=true"
- "traefik.http.middlewares.middleware09.headers.stsseconds=42"
- "traefik.http.middlewares.middleware10.ipwhitelist.ipstrategy.depth=42"
- "traefik.http.middlewares.middleware10.ipwhitelist.ipstrategy.excludedips=foobar, foobar"
- "traefik.http.middlewares.middleware10.ipwhitelist.sourcerange=foobar, foobar"
- "traefik.http.middlewares.middleware11.maxconn.amount=42"
- "traefik.http.middlewares.middleware11.maxconn.extractorfunc=foobar"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.commonname=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.country=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.domaincomponent=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.locality=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.organization=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.province=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.serialnumber=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.notafter=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.notbefore=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.sans=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.commonname=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.country=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.domaincomponent=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.locality=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.organization=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.province=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.serialnumber=true"
- "traefik.http.middlewares.middleware12.passtlsclientcert.pem=true"
- "traefik.http.middlewares.middleware14.redirectregex.permanent=true"
- "traefik.http.middlewares.middleware14.redirectregex.regex=foobar"
- "traefik.http.middlewares.middleware14.redirectregex.replacement=foobar"
- "traefik.http.middlewares.middleware15.redirectscheme.permanent=true"
- "traefik.http.middlewares.middleware15.redirectscheme.port=foobar"
- "traefik.http.middlewares.middleware15.redirectscheme.scheme=foobar"
- "traefik.http.middlewares.middleware16.replacepath.path=foobar"
- "traefik.http.middlewares.middleware17.replacepathregex.regex=foobar"
- "traefik.http.middlewares.middleware17.replacepathregex.replacement=foobar"
- "traefik.http.middlewares.middleware18.retry.attempts=42"
- "traefik.http.middlewares.middleware19.stripprefix.prefixes=foobar, foobar"
- "traefik.http.middlewares.middleware20.stripprefixregex.regex=foobar, foobar"
- "traefik.http.routers.router0.entrypoints=foobar, foobar"
- "traefik.http.routers.router0.middlewares=foobar, foobar"
- "traefik.http.routers.router0.priority=42"
- "traefik.http.routers.router0.rule=foobar"
- "traefik.http.routers.router0.service=foobar"
- "traefik.http.routers.router0.tls=true"
- "traefik.http.routers.router0.tls.options=foobar"
- "traefik.http.routers.router1.entrypoints=foobar, foobar"
- "traefik.http.routers.router1.middlewares=foobar, foobar"
- "traefik.http.routers.router1.priority=42"
- "traefik.http.routers.router1.rule=foobar"
- "traefik.http.routers.router1.service=foobar"
- "traefik.http.routers.router1.tls=true"
- "traefik.http.routers.router1.tls.options=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.headers.name0=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.headers.name1=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.hostname=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.interval=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.path=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.port=42"
- "traefik.http.services.service0.loadbalancer.healthcheck.scheme=foobar"
- "traefik.http.services.service0.loadbalancer.healthcheck.timeout=foobar"
- "traefik.http.services.service0.loadbalancer.passhostheader=true"
- "traefik.http.services.service0.loadbalancer.responseforwarding.flushinterval=foobar"
- "traefik.http.services.service0.loadbalancer.stickiness=true"
- "traefik.http.services.service0.loadbalancer.stickiness.cookiename=foobar"
- "traefik.http.services.service0.loadbalancer.stickiness.httponlycookie=true"
- "traefik.http.services.service0.loadbalancer.stickiness.securecookie=true"
- "traefik.http.services.service0.loadbalancer.server.port=foobar"
- "traefik.http.services.service0.loadbalancer.server.scheme=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.headers.name0=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.headers.name1=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.hostname=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.interval=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.path=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.port=42"
- "traefik.http.services.service1.loadbalancer.healthcheck.scheme=foobar"
- "traefik.http.services.service1.loadbalancer.healthcheck.timeout=foobar"
- "traefik.http.services.service1.loadbalancer.passhostheader=true"
- "traefik.http.services.service1.loadbalancer.responseforwarding.flushinterval=foobar"
- "traefik.http.services.service1.loadbalancer.stickiness=true"
- "traefik.http.services.service1.loadbalancer.stickiness.cookiename=foobar"
- "traefik.http.services.service1.loadbalancer.stickiness.httponlycookie=true"
- "traefik.http.services.service1.loadbalancer.stickiness.securecookie=true"
- "traefik.http.services.service1.loadbalancer.server.port=foobar"
- "traefik.http.services.service1.loadbalancer.server.scheme=foobar"
- "traefik.tcp.routers.tcprouter0.entrypoints=foobar, foobar"
- "traefik.tcp.routers.tcprouter0.rule=foobar"
- "traefik.tcp.routers.tcprouter0.service=foobar"
- "traefik.tcp.routers.tcprouter0.tls=true"
- "traefik.tcp.routers.tcprouter0.tls.options=foobar"
- "traefik.tcp.routers.tcprouter0.tls.passthrough=true"
- "traefik.tcp.routers.tcprouter1.entrypoints=foobar, foobar"
- "traefik.tcp.routers.tcprouter1.rule=foobar"
- "traefik.tcp.routers.tcprouter1.service=foobar"
- "traefik.tcp.routers.tcprouter1.tls=true"
- "traefik.tcp.routers.tcprouter1.tls.options=foobar"
- "traefik.tcp.routers.tcprouter1.tls.passthrough=true"
- "traefik.tcp.services.tcpservice0.loadbalancer.server.port=foobar"
- "traefik.tcp.services.tcpservice1.loadbalancer.server.port=foobar"

View file

@ -0,0 +1,177 @@
"traefik.http.middlewares.middleware00.addprefix.prefix": "foobar",
"traefik.http.middlewares.middleware01.basicauth.headerfield": "foobar",
"traefik.http.middlewares.middleware01.basicauth.realm": "foobar",
"traefik.http.middlewares.middleware01.basicauth.removeheader": "true",
"traefik.http.middlewares.middleware01.basicauth.users": "foobar, foobar",
"traefik.http.middlewares.middleware01.basicauth.usersfile": "foobar",
"traefik.http.middlewares.middleware02.buffering.maxrequestbodybytes": "42",
"traefik.http.middlewares.middleware02.buffering.maxresponsebodybytes": "42",
"traefik.http.middlewares.middleware02.buffering.memrequestbodybytes": "42",
"traefik.http.middlewares.middleware02.buffering.memresponsebodybytes": "42",
"traefik.http.middlewares.middleware02.buffering.retryexpression": "foobar",
"traefik.http.middlewares.middleware03.chain.middlewares": "foobar, foobar",
"traefik.http.middlewares.middleware04.circuitbreaker.expression": "foobar",
"traefik.http.middlewares.middleware05.compress": "true",
"traefik.http.middlewares.middleware06.digestauth.headerfield": "foobar",
"traefik.http.middlewares.middleware06.digestauth.realm": "foobar",
"traefik.http.middlewares.middleware06.digestauth.removeheader": "true",
"traefik.http.middlewares.middleware06.digestauth.users": "foobar, foobar",
"traefik.http.middlewares.middleware06.digestauth.usersfile": "foobar",
"traefik.http.middlewares.middleware07.errors.query": "foobar",
"traefik.http.middlewares.middleware07.errors.service": "foobar",
"traefik.http.middlewares.middleware07.errors.status": "foobar, foobar",
"traefik.http.middlewares.middleware08.forwardauth.address": "foobar",
"traefik.http.middlewares.middleware08.forwardauth.authresponseheaders": "foobar, foobar",
"traefik.http.middlewares.middleware08.forwardauth.tls.ca": "foobar",
"traefik.http.middlewares.middleware08.forwardauth.tls.caoptional": "true",
"traefik.http.middlewares.middleware08.forwardauth.tls.cert": "foobar",
"traefik.http.middlewares.middleware08.forwardauth.tls.insecureskipverify": "true",
"traefik.http.middlewares.middleware08.forwardauth.tls.key": "foobar",
"traefik.http.middlewares.middleware08.forwardauth.trustforwardheader": "true",
"traefik.http.middlewares.middleware09.headers.accesscontrolallowcredentials": "true",
"traefik.http.middlewares.middleware09.headers.accesscontrolallowheaders": "foobar, foobar",
"traefik.http.middlewares.middleware09.headers.accesscontrolallowmethods": "foobar, foobar",
"traefik.http.middlewares.middleware09.headers.accesscontrolalloworigin": "foobar",
"traefik.http.middlewares.middleware09.headers.accesscontrolexposeheaders": "foobar, foobar",
"traefik.http.middlewares.middleware09.headers.accesscontrolmaxage": "42",
"traefik.http.middlewares.middleware09.headers.addvaryheader": "true",
"traefik.http.middlewares.middleware09.headers.allowedhosts": "foobar, foobar",
"traefik.http.middlewares.middleware09.headers.browserxssfilter": "true",
"traefik.http.middlewares.middleware09.headers.contentsecuritypolicy": "foobar",
"traefik.http.middlewares.middleware09.headers.contenttypenosniff": "true",
"traefik.http.middlewares.middleware09.headers.custombrowserxssvalue": "foobar",
"traefik.http.middlewares.middleware09.headers.customframeoptionsvalue": "foobar",
"traefik.http.middlewares.middleware09.headers.customrequestheaders.name0": "foobar",
"traefik.http.middlewares.middleware09.headers.customrequestheaders.name1": "foobar",
"traefik.http.middlewares.middleware09.headers.customresponseheaders.name0": "foobar",
"traefik.http.middlewares.middleware09.headers.customresponseheaders.name1": "foobar",
"traefik.http.middlewares.middleware09.headers.forcestsheader": "true",
"traefik.http.middlewares.middleware09.headers.framedeny": "true",
"traefik.http.middlewares.middleware09.headers.hostsproxyheaders": "foobar, foobar",
"traefik.http.middlewares.middleware09.headers.isdevelopment": "true",
"traefik.http.middlewares.middleware09.headers.publickey": "foobar",
"traefik.http.middlewares.middleware09.headers.referrerpolicy": "foobar",
"traefik.http.middlewares.middleware09.headers.sslforcehost": "true",
"traefik.http.middlewares.middleware09.headers.sslhost": "foobar",
"traefik.http.middlewares.middleware09.headers.sslproxyheaders.name0": "foobar",
"traefik.http.middlewares.middleware09.headers.sslproxyheaders.name1": "foobar",
"traefik.http.middlewares.middleware09.headers.sslredirect": "true",
"traefik.http.middlewares.middleware09.headers.ssltemporaryredirect": "true",
"traefik.http.middlewares.middleware09.headers.stsincludesubdomains": "true",
"traefik.http.middlewares.middleware09.headers.stspreload": "true",
"traefik.http.middlewares.middleware09.headers.stsseconds": "42",
"traefik.http.middlewares.middleware10.ipwhitelist.ipstrategy.depth": "42",
"traefik.http.middlewares.middleware10.ipwhitelist.ipstrategy.excludedips": "foobar, foobar",
"traefik.http.middlewares.middleware10.ipwhitelist.sourcerange": "foobar, foobar",
"traefik.http.middlewares.middleware11.maxconn.amount": "42",
"traefik.http.middlewares.middleware11.maxconn.extractorfunc": "foobar",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.commonname": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.country": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.domaincomponent": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.locality": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.organization": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.province": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.issuer.serialnumber": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.notafter": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.notbefore": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.sans": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.commonname": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.country": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.domaincomponent": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.locality": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.organization": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.province": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.info.subject.serialnumber": "true",
"traefik.http.middlewares.middleware12.passtlsclientcert.pem": "true",
"traefik.http.middlewares.middleware13.redirectregex.permanent": "true",
"traefik.http.middlewares.middleware13.redirectregex.regex": "foobar",
"traefik.http.middlewares.middleware13.redirectregex.replacement": "foobar",
"traefik.http.middlewares.middleware14.redirectscheme.permanent": "true",
"traefik.http.middlewares.middleware14.redirectscheme.port": "foobar",
"traefik.http.middlewares.middleware14.redirectscheme.scheme": "foobar",
"traefik.http.middlewares.middleware15.replacepath.path": "foobar",
"traefik.http.middlewares.middleware16.replacepathregex.regex": "foobar",
"traefik.http.middlewares.middleware16.replacepathregex.replacement": "foobar",
"traefik.http.middlewares.middleware17.retry.attempts": "42",
"traefik.http.middlewares.middleware18.stripprefix.prefixes": "foobar, foobar",
"traefik.http.middlewares.middleware19.stripprefixregex.regex": "foobar, foobar",
"traefik.http.routers.router0.entrypoints": "foobar, foobar",
"traefik.http.routers.router0.middlewares": "foobar, foobar",
"traefik.http.routers.router0.priority": "42",
"traefik.http.routers.router0.rule": "foobar",
"traefik.http.routers.router0.service": "foobar",
"traefik.http.routers.router0.tls": "true",
"traefik.http.routers.router0.tls.certresolver": "foobar",
"traefik.http.routers.router0.tls.domains[0].main": "foobar",
"traefik.http.routers.router0.tls.domains[0].sans": "foobar, foobar",
"traefik.http.routers.router0.tls.domains[1].main": "foobar",
"traefik.http.routers.router0.tls.domains[1].sans": "foobar, foobar",
"traefik.http.routers.router0.tls.options": "foobar",
"traefik.http.routers.router1.entrypoints": "foobar, foobar",
"traefik.http.routers.router1.middlewares": "foobar, foobar",
"traefik.http.routers.router1.priority": "42",
"traefik.http.routers.router1.rule": "foobar",
"traefik.http.routers.router1.service": "foobar",
"traefik.http.routers.router1.tls": "true",
"traefik.http.routers.router1.tls.certresolver": "foobar",
"traefik.http.routers.router1.tls.domains[0].main": "foobar",
"traefik.http.routers.router1.tls.domains[0].sans": "foobar, foobar",
"traefik.http.routers.router1.tls.domains[1].main": "foobar",
"traefik.http.routers.router1.tls.domains[1].sans": "foobar, foobar",
"traefik.http.routers.router1.tls.options": "foobar",
"traefik.http.services.service0.loadbalancer.healthcheck.headers.name0": "foobar",
"traefik.http.services.service0.loadbalancer.healthcheck.headers.name1": "foobar",
"traefik.http.services.service0.loadbalancer.healthcheck.hostname": "foobar",
"traefik.http.services.service0.loadbalancer.healthcheck.interval": "foobar",
"traefik.http.services.service0.loadbalancer.healthcheck.path": "foobar",
"traefik.http.services.service0.loadbalancer.healthcheck.port": "42",
"traefik.http.services.service0.loadbalancer.healthcheck.scheme": "foobar",
"traefik.http.services.service0.loadbalancer.healthcheck.timeout": "foobar",
"traefik.http.services.service0.loadbalancer.passhostheader": "true",
"traefik.http.services.service0.loadbalancer.responseforwarding.flushinterval": "foobar",
"traefik.http.services.service0.loadbalancer.stickiness": "true",
"traefik.http.services.service0.loadbalancer.stickiness.cookiename": "foobar",
"traefik.http.services.service0.loadbalancer.stickiness.httponlycookie": "true",
"traefik.http.services.service0.loadbalancer.stickiness.securecookie": "true",
"traefik.http.services.service0.loadbalancer.server.port": "foobar",
"traefik.http.services.service0.loadbalancer.server.scheme": "foobar",
"traefik.http.services.service1.loadbalancer.healthcheck.headers.name0": "foobar",
"traefik.http.services.service1.loadbalancer.healthcheck.headers.name1": "foobar",
"traefik.http.services.service1.loadbalancer.healthcheck.hostname": "foobar",
"traefik.http.services.service1.loadbalancer.healthcheck.interval": "foobar",
"traefik.http.services.service1.loadbalancer.healthcheck.path": "foobar",
"traefik.http.services.service1.loadbalancer.healthcheck.port": "42",
"traefik.http.services.service1.loadbalancer.healthcheck.scheme": "foobar",
"traefik.http.services.service1.loadbalancer.healthcheck.timeout": "foobar",
"traefik.http.services.service1.loadbalancer.passhostheader": "true",
"traefik.http.services.service1.loadbalancer.responseforwarding.flushinterval": "foobar",
"traefik.http.services.service1.loadbalancer.stickiness": "true",
"traefik.http.services.service1.loadbalancer.stickiness.cookiename": "foobar",
"traefik.http.services.service1.loadbalancer.stickiness.httponlycookie": "true",
"traefik.http.services.service1.loadbalancer.stickiness.securecookie": "true",
"traefik.http.services.service1.loadbalancer.server.port": "foobar",
"traefik.http.services.service1.loadbalancer.server.scheme": "foobar",
"traefik.tcp.routers.tcprouter0.entrypoints": "foobar, foobar",
"traefik.tcp.routers.tcprouter0.rule": "foobar",
"traefik.tcp.routers.tcprouter0.service": "foobar",
"traefik.tcp.routers.tcprouter0.tls": "true",
"traefik.tcp.routers.tcprouter0.tls.certresolver": "foobar",
"traefik.tcp.routers.tcprouter0.tls.domains[0].main": "foobar",
"traefik.tcp.routers.tcprouter0.tls.domains[0].sans": "foobar, foobar",
"traefik.tcp.routers.tcprouter0.tls.domains[1].main": "foobar",
"traefik.tcp.routers.tcprouter0.tls.domains[1].sans": "foobar, foobar",
"traefik.tcp.routers.tcprouter0.tls.options": "foobar",
"traefik.tcp.routers.tcprouter0.tls.passthrough": "true",
"traefik.tcp.routers.tcprouter1.entrypoints": "foobar, foobar",
"traefik.tcp.routers.tcprouter1.rule": "foobar",
"traefik.tcp.routers.tcprouter1.service": "foobar",
"traefik.tcp.routers.tcprouter1.tls": "true",
"traefik.tcp.routers.tcprouter1.tls.certresolver": "foobar",
"traefik.tcp.routers.tcprouter1.tls.domains[0].main": "foobar",
"traefik.tcp.routers.tcprouter1.tls.domains[0].sans": "foobar, foobar",
"traefik.tcp.routers.tcprouter1.tls.domains[1].main": "foobar",
"traefik.tcp.routers.tcprouter1.tls.domains[1].sans": "foobar, foobar",
"traefik.tcp.routers.tcprouter1.tls.options": "foobar",
"traefik.tcp.routers.tcprouter1.tls.passthrough": "true",
"traefik.tcp.services.tcpservice0.loadbalancer.server.port": "foobar",
"traefik.tcp.services.tcpservice1.loadbalancer.server.port": "foobar"

View file

@ -0,0 +1,2 @@
"traefik.enable": "true",
"traefik.marathon.ipaddressidx": "42",

View file

@ -3,8 +3,9 @@
Dynamic configuration with Marathon Labels Dynamic configuration with Marathon Labels
{: .subtitle } {: .subtitle }
```yaml ```json
labels: "labels": {
--8<-- "content/reference/dynamic-configuration/marathon.yml" --8<-- "content/reference/dynamic-configuration/marathon.json"
--8<-- "content/reference/dynamic-configuration/labels.yml" --8<-- "content/reference/dynamic-configuration/marathon-labels.json"
}
``` ```

View file

@ -1,2 +0,0 @@
- "traefik.enable=true"
- "traefik.marathon.ipaddressidx=42"

View file

@ -0,0 +1,12 @@
# Rancher Configuration Reference
Dynamic configuration with Rancher Labels
{: .subtitle }
The labels are case insensitive.
```yaml
labels:
--8<-- "content/reference/dynamic-configuration/rancher.yml"
--8<-- "content/reference/dynamic-configuration/docker-labels.yml"
```

View file

@ -0,0 +1 @@
- "traefik.enable=true"

View file

@ -96,7 +96,6 @@
labelSelector = "foobar" labelSelector = "foobar"
ingressClass = "foobar" ingressClass = "foobar"
[providers.rest] [providers.rest]
entryPoint = "foobar"
[providers.rancher] [providers.rancher]
constraints = "foobar" constraints = "foobar"
watch = true watch = true
@ -108,18 +107,12 @@
prefix = "foobar" prefix = "foobar"
[api] [api]
entryPoint = "foobar"
dashboard = true dashboard = true
debug = true debug = true
middlewares = ["foobar", "foobar"]
[api.statistics]
recentErrors = 42
[metrics] [metrics]
[metrics.prometheus] [metrics.prometheus]
buckets = [42.0, 42.0] buckets = [42.0, 42.0]
entryPoint = "foobar"
middlewares = ["foobar", "foobar"]
addEntryPointsLabels = true addEntryPointsLabels = true
addServicesLabels = true addServicesLabels = true
[metrics.dataDog] [metrics.dataDog]
@ -144,8 +137,6 @@
addServicesLabels = true addServicesLabels = true
[ping] [ping]
entryPoint = "foobar"
middlewares = ["foobar", "foobar"]
[log] [log]
level = "foobar" level = "foobar"
@ -219,25 +210,32 @@
resolvConfig = "foobar" resolvConfig = "foobar"
resolvDepth = 42 resolvDepth = 42
[acme] [certificatesResolvers]
email = "foobar" [certificatesResolvers.CertificateResolver0]
caServer = "foobar" [certificatesResolvers.CertificateResolver0.acme]
storage = "foobar" email = "foobar"
entryPoint = "foobar" caServer = "foobar"
keyType = "foobar" storage = "foobar"
[acme.dnsChallenge] keyType = "foobar"
provider = "foobar" [certificatesResolvers.CertificateResolver0.acme.dnsChallenge]
delayBeforeCheck = 42 provider = "foobar"
resolvers = ["foobar", "foobar"] delayBeforeCheck = 42
disablePropagationCheck = true resolvers = ["foobar", "foobar"]
[acme.httpChallenge] disablePropagationCheck = true
entryPoint = "foobar" [certificatesResolvers.CertificateResolver0.acme.httpChallenge]
[acme.tlsChallenge] entryPoint = "foobar"
[certificatesResolvers.CertificateResolver0.acme.tlsChallenge]
[[acme.domains]] [certificatesResolvers.CertificateResolver1]
main = "foobar" [certificatesResolvers.CertificateResolver1.acme]
sans = ["foobar", "foobar"] email = "foobar"
caServer = "foobar"
[[acme.domains]] storage = "foobar"
main = "foobar" keyType = "foobar"
sans = ["foobar", "foobar"] [certificatesResolvers.CertificateResolver1.acme.dnsChallenge]
provider = "foobar"
delayBeforeCheck = 42
resolvers = ["foobar", "foobar"]
disablePropagationCheck = true
[certificatesResolvers.CertificateResolver1.acme.httpChallenge]
entryPoint = "foobar"
[certificatesResolvers.CertificateResolver1.acme.tlsChallenge]

View file

@ -102,8 +102,7 @@ providers:
- foobar - foobar
labelSelector: foobar labelSelector: foobar
ingressClass: foobar ingressClass: foobar
rest: rest: {}
entryPoint: foobar
rancher: rancher:
constraints: foobar constraints: foobar
watch: true watch: true
@ -114,23 +113,13 @@ providers:
intervalPoll: true intervalPoll: true
prefix: foobar prefix: foobar
api: api:
entryPoint: foobar
dashboard: true dashboard: true
debug: true debug: true
statistics:
recentErrors: 42
middlewares:
- foobar
- foobar
metrics: metrics:
prometheus: prometheus:
buckets: buckets:
- 42 - 42
- 42 - 42
entryPoint: foobar
middlewares:
- foobar
- foobar
addEntryPointsLabels: true addEntryPointsLabels: true
addServicesLabels: true addServicesLabels: true
dataDog: dataDog:
@ -153,11 +142,7 @@ metrics:
password: foobar password: foobar
addEntryPointsLabels: true addEntryPointsLabels: true
addServicesLabels: true addServicesLabels: true
ping: ping: {}
entryPoint: foobar
middlewares:
- foobar
- foobar
log: log:
level: foobar level: foobar
filePath: foobar filePath: foobar
@ -228,28 +213,36 @@ hostResolver:
cnameFlattening: true cnameFlattening: true
resolvConfig: foobar resolvConfig: foobar
resolvDepth: 42 resolvDepth: 42
acme: certificatesResolvers:
email: foobar CertificateResolver0:
caServer: foobar acme:
storage: foobar email: foobar
entryPoint: foobar caServer: foobar
keyType: foobar storage: foobar
dnsChallenge: keyType: foobar
provider: foobar dnsChallenge:
delayBeforeCheck: 42 provider: foobar
resolvers: delayBeforeCheck: 42
- foobar resolvers:
- foobar - foobar
disablePropagationCheck: true - foobar
httpChallenge: disablePropagationCheck: true
entryPoint: foobar httpChallenge:
tlsChallenge: {} entryPoint: foobar
domains: tlsChallenge: {}
- main: foobar CertificateResolver1:
sans: acme:
- foobar email: foobar
- foobar caServer: foobar
- main: foobar storage: foobar
sans: keyType: foobar
- foobar dnsChallenge:
- foobar provider: foobar
delayBeforeCheck: 42
resolvers:
- foobar
- foobar
disablePropagationCheck: true
httpChallenge:
entryPoint: foobar
tlsChallenge: {}

View file

@ -288,10 +288,6 @@ Traefik will terminate the SSL connections (meaning that it will send decrypted
In the current version, with [ACME](../../https/acme.md) enabled, automatic certificate generation will apply to every router declaring a TLS section. In the current version, with [ACME](../../https/acme.md) enabled, automatic certificate generation will apply to every router declaring a TLS section.
!!! note "Passthrough"
On TCP routers, you can configure a passthrough option so that Traefik doesn't terminate the TLS connection.
!!! important "Routers for HTTP & HTTPS" !!! important "Routers for HTTP & HTTPS"
If you need to define the same route for both HTTP and HTTPS requests, you will need to define two different routers: one with the tls section, one without. If you need to define the same route for both HTTP and HTTPS requests, you will need to define two different routers: one with the tls section, one without.
@ -463,7 +459,7 @@ http:
``` ```
[ACME v2](https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579) supports wildcard certificates. [ACME v2](https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579) supports wildcard certificates.
As described in [Let's Encrypt's post](https://community.letsencrypt.org/t/staging-endpoint-for-acme-v2/49605) wildcard certificates can only be generated through a [`DNS-01` challenge](./../../https/acme.md#dnschallenge). As described in [Let's Encrypt's post](https://community.letsencrypt.org/t/staging-endpoint-for-acme-v2/49605) wildcard certificates can only be generated through a [`DNS-01` challenge](../../https/acme.md#dnschallenge).
Most likely the root domain should receive a certificate too, so it needs to be specified as SAN and 2 `DNS-01` challenges are executed. Most likely the root domain should receive a certificate too, so it needs to be specified as SAN and 2 `DNS-01` challenges are executed.
In this case the generated DNS TXT record for both domains is the same. In this case the generated DNS TXT record for both domains is the same.
@ -471,10 +467,10 @@ Even though this behavior is [DNS RFC](https://community.letsencrypt.org/t/wildc
it can lead to problems as all DNS providers keep DNS records cached for a given time (TTL) and this TTL can be greater than the challenge timeout making the `DNS-01` challenge fail. it can lead to problems as all DNS providers keep DNS records cached for a given time (TTL) and this TTL can be greater than the challenge timeout making the `DNS-01` challenge fail.
The Traefik ACME client library [LEGO](https://github.com/go-acme/lego) supports some but not all DNS providers to work around this issue. The Traefik ACME client library [LEGO](https://github.com/go-acme/lego) supports some but not all DNS providers to work around this issue.
The [Supported `provider` table](./../../https/acme.md#providers) indicates if they allow generating certificates for a wildcard domain and its root domain. The [Supported `provider` table](../../https/acme.md#providers) indicates if they allow generating certificates for a wildcard domain and its root domain.
!!! note !!! note
Wildcard certificates can only be verified through a `DNS-01` challenge. Wildcard certificates can only be verified through a [`DNS-01` challenge](../../https/acme.md#dnschallenge).
!!! note "Double Wildcard Certificates" !!! note "Double Wildcard Certificates"
It is not possible to request a double wildcard certificate for a domain (for example `*.*.local.com`). It is not possible to request a double wildcard certificate for a domain (for example `*.*.local.com`).

View file

@ -34,7 +34,7 @@ api: {}
```yaml tab="CLI" ```yaml tab="CLI"
--entryPoints.web.address=":80" --entryPoints.web.address=":80"
--providers.file.filename=dynamic_conf.toml --providers.file.filename=dynamic_conf.toml
--api --api=true
``` ```
`dynamic_conf.{toml,yml}`: `dynamic_conf.{toml,yml}`:
@ -157,7 +157,7 @@ api: {}
# For secure connection on backend.local # For secure connection on backend.local
--serversTransport.rootCAs=./backend.cert --serversTransport.rootCAs=./backend.cert
--providers.file.filename=dynamic_conf.toml --providers.file.filename=dynamic_conf.toml
--api --api=true
``` ```
`dynamic_conf.{toml,yml}`: `dynamic_conf.{toml,yml}`:

View file

@ -146,7 +146,7 @@ nav:
- 'Data Collection': 'contributing/data-collection.md' - 'Data Collection': 'contributing/data-collection.md'
- 'Advocating': 'contributing/advocating.md' - 'Advocating': 'contributing/advocating.md'
- 'Maintainers': 'contributing/maintainers.md' - 'Maintainers': 'contributing/maintainers.md'
- 'Glossary': 'glossary.md' # - 'Glossary': 'glossary.md'
- 'References': - 'References':
- 'Static Configuration': - 'Static Configuration':
- 'Overview': 'reference/static-configuration/overview.md' - 'Overview': 'reference/static-configuration/overview.md'
@ -154,7 +154,8 @@ nav:
- 'CLI': 'reference/static-configuration/cli.md' - 'CLI': 'reference/static-configuration/cli.md'
- 'Environment variables': 'reference/static-configuration/env.md' - 'Environment variables': 'reference/static-configuration/env.md'
- 'Dynamic Configuration': - 'Dynamic Configuration':
- 'Docker': 'reference/dynamic-configuration/docker.md'
- 'Marathon': 'reference/dynamic-configuration/marathon.md'
- 'Kubernetes CRD': 'reference/dynamic-configuration/kubernetes-crd.md'
- 'File': 'reference/dynamic-configuration/file.md' - 'File': 'reference/dynamic-configuration/file.md'
- 'Docker': 'reference/dynamic-configuration/docker.md'
- 'Kubernetes CRD': 'reference/dynamic-configuration/kubernetes-crd.md'
- 'Marathon': 'reference/dynamic-configuration/marathon.md'
- 'Rancher': 'reference/dynamic-configuration/rancher.md'

View file

@ -1,6 +1,7 @@
################################################################ ################################################################
# #
# Configuration sample for Traefik v2 # Configuration sample for Traefik v2.
#
# For Traefik v1: https://github.com/containous/traefik/blob/v1.7/traefik.sample.toml # For Traefik v1: https://github.com/containous/traefik/blob/v1.7/traefik.sample.toml
# #
################################################################ ################################################################
@ -22,7 +23,10 @@
# Default: # Default:
[entryPoints] [entryPoints]
[entryPoints.web] [entryPoints.web]
address = ":80" address = ":80"
[entryPoints.websecure]
address = ":443"
################################################################ ################################################################
# Traefik logs configuration # Traefik logs configuration
@ -35,27 +39,27 @@
# #
[log] [log]
# Log level # Log level
# #
# Optional # Optional
# Default: "ERROR" # Default: "ERROR"
# #
# level = "DEBUG" # level = "DEBUG"
# Sets the filepath for the traefik log. If not specified, stdout will be used. # Sets the filepath for the traefik log. If not specified, stdout will be used.
# Intermediate directories are created if necessary. # Intermediate directories are created if necessary.
# #
# Optional # Optional
# Default: os.Stdout # Default: os.Stdout
# #
# filePath = "log/traefik.log" # filePath = "log/traefik.log"
# Format is either "json" or "common". # Format is either "json" or "common".
# #
# Optional # Optional
# Default: "common" # Default: "common"
# #
# format = "common" # format = "json"
################################################################ ################################################################
# Access logs configuration # Access logs configuration
@ -69,20 +73,20 @@
# #
# [accessLog] # [accessLog]
# Sets the file path for the access log. If not specified, stdout will be used. # Sets the file path for the access log. If not specified, stdout will be used.
# Intermediate directories are created if necessary. # Intermediate directories are created if necessary.
# #
# Optional # Optional
# Default: os.Stdout # Default: os.Stdout
# #
# filePath = "/path/to/log/log.txt" # filePath = "/path/to/log/log.txt"
# Format is either "json" or "common". # Format is either "json" or "common".
# #
# Optional # Optional
# Default: "common" # Default: "common"
# #
# format = "common" # format = "json"
################################################################ ################################################################
# API and dashboard configuration # API and dashboard configuration
@ -126,23 +130,23 @@
# Enable Docker configuration backend # Enable Docker configuration backend
[providers.docker] [providers.docker]
# Docker server endpoint. Can be a tcp or a unix socket endpoint. # Docker server endpoint. Can be a tcp or a unix socket endpoint.
# #
# Required # Required
# Default: "unix:///var/run/docker.sock" # Default: "unix:///var/run/docker.sock"
# #
# endpoint = "tcp://10.10.10.10:2375" # endpoint = "tcp://10.10.10.10:2375"
# Default host rule. # Default host rule.
# #
# Optional # Optional
# Default: "" # Default: "Host(`{{ normalize .Name }}`)"
# #
# DefaultRule = "Host(`{{ normalize .Name }}.docker.localhost`)" # defaultRule = "Host(`{{ normalize .Name }}.docker.localhost`)"
# Expose containers by default in traefik # Expose containers by default in traefik
# #
# Optional # Optional
# Default: true # Default: true
# #
# exposedByDefault = true # exposedByDefault = false