Add a new protocol
Co-authored-by: Gérald Croës <gerald@containo.us>
This commit is contained in:
parent
0ca2149408
commit
4a68d29ce2
231 changed files with 6895 additions and 4395 deletions
|
@ -12,8 +12,8 @@ The AddPrefix middleware updates the URL Path of the request before forwarding i
|
|||
??? example "File -- Prefixing with /foo"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.add-foo.AddPrefix]
|
||||
[http.middlewares]
|
||||
[http.middlewares.add-foo.AddPrefix]
|
||||
prefix = "/foo"
|
||||
```
|
||||
|
||||
|
@ -23,7 +23,7 @@ The AddPrefix middleware updates the URL Path of the request before forwarding i
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.add-bar.addprefix.prefix=/bar"
|
||||
- "traefik.http.middlewares.add-bar.addprefix.prefix=/bar"
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
|
|
@ -12,8 +12,8 @@ The BasicAuth middleware is a quick way to restrict access to your services to k
|
|||
??? example "File -- Declaring the user list"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-auth.basicauth]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-auth.basicauth]
|
||||
users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
||||
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"]
|
||||
```
|
||||
|
@ -24,7 +24,7 @@ The BasicAuth middleware is a quick way to restrict access to your services to k
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.declared-users-only.basicauth.usersFile=path-to-file.ext",
|
||||
- "traefik.http.middlewares.declared-users-only.basicauth.usersFile=path-to-file.ext",
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
@ -73,7 +73,7 @@ You can customize the header field for the authenticated user using the `headerF
|
|||
??? example "File -- Passing Authenticated Users to Services Via Headers"
|
||||
|
||||
```toml
|
||||
[Middlewares.my-auth.basicauth]
|
||||
[http.middlewares.my-auth.basicauth]
|
||||
usersFile = "path-to-file.ext"
|
||||
headerField = "X-WebAuth-User" # header for the authenticated user
|
||||
```
|
||||
|
|
|
@ -16,8 +16,8 @@ This can help services deal with large data (multipart/form-data for example), a
|
|||
??? example "File -- Sets the maximum request body to 2Mb"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.2Mb-limit.buffering]
|
||||
[http.middlewares]
|
||||
[http.middlewares.2Mb-limit.buffering]
|
||||
maxRequestBodyBytes = 250000
|
||||
```
|
||||
|
||||
|
@ -27,7 +27,7 @@ This can help services deal with large data (multipart/form-data for example), a
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.1Mb-memory.buffering.memRequestBodyBytes=125000",
|
||||
- "traefik.http.middlewares.1Mb-memory.buffering.memRequestBodyBytes=125000",
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
|
|
@ -14,27 +14,27 @@ It makes reusing the same groups easier.
|
|||
|
||||
```toml
|
||||
# ...
|
||||
[Routers]
|
||||
[Routers.router1]
|
||||
[http.routers]
|
||||
[http.routers.router1]
|
||||
service = "service1"
|
||||
middlewares = ["secured"]
|
||||
rule = "Host: mydomain"
|
||||
|
||||
[Middlewares]
|
||||
[Middlewares.secured.Chain]
|
||||
[http.middlewares]
|
||||
[http.middlewares.secured.Chain]
|
||||
middlewares = ["https-only", "known-ips", "auth-users"]
|
||||
|
||||
[Middlewares.auth-users.BasicAuth]
|
||||
[http.middlewares.auth-users.BasicAuth]
|
||||
users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"]
|
||||
[Middlewares.https-only.SchemeRedirect]
|
||||
[http.middlewares.https-only.SchemeRedirect]
|
||||
scheme = "https"
|
||||
[Middlewares.known-ips.ipWhiteList]
|
||||
[http.middlewares.known-ips.ipWhiteList]
|
||||
sourceRange = ["192.168.1.7", "x.x.x.x", "x.x.x.x"]
|
||||
|
||||
[Services]
|
||||
[Services.service1]
|
||||
[Services.service1.LoadBalancer]
|
||||
[[Services.service1.LoadBalancer.Servers]]
|
||||
[http.services]
|
||||
[http.services.service1]
|
||||
[http.services.service1.LoadBalancer]
|
||||
[[http.services.service1.LoadBalancer.Servers]]
|
||||
URL = "http://127.0.0.1:80"
|
||||
Weight = 1
|
||||
```
|
||||
|
|
|
@ -26,8 +26,8 @@ To assess if your system is healthy, the circuit breaker constantly monitors the
|
|||
??? example "Latency Check -- Using Toml"
|
||||
|
||||
```toml
|
||||
[middlewares]
|
||||
[middlewares.latency-check.circuitbreaker]
|
||||
[http.middlewares]
|
||||
[http.middlewares.latency-check.circuitbreaker]
|
||||
expression = "LatencyAtQuantileMS(50.0) > 100"
|
||||
```
|
||||
|
||||
|
@ -38,7 +38,7 @@ To assess if your system is healthy, the circuit breaker constantly monitors the
|
|||
container-definition:
|
||||
image: image-name
|
||||
labels:
|
||||
- "traefik.middlewares.latency-check.circuitbreaker.expression=LatencyAtQuantileMS(50.0) > 100"
|
||||
- "traefik.http.middlewares.latency-check.circuitbreaker.expression=LatencyAtQuantileMS(50.0) > 100"
|
||||
```
|
||||
|
||||
## Possible States
|
||||
|
|
|
@ -12,8 +12,8 @@ The Compress middleware enables the gzip compression.
|
|||
??? example "File -- enable gzip compression"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-compress.Compress]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-compress.Compress]
|
||||
```
|
||||
|
||||
??? example "Docker -- enable gzip compression"
|
||||
|
@ -22,7 +22,7 @@ The Compress middleware enables the gzip compression.
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.test-compress.compress=true",
|
||||
- "traefik.http.middlewares.test-compress.compress=true",
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
|
|
@ -12,8 +12,8 @@ The DigestAuth middleware is a quick way to restrict access to your services to
|
|||
??? example "File -- Declaring the user list"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-auth.digestauth]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-auth.digestauth]
|
||||
users = ["test:traefik:a2688e031edb4be6a3797f3882655c05", "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"]
|
||||
```
|
||||
|
||||
|
@ -23,7 +23,7 @@ The DigestAuth middleware is a quick way to restrict access to your services to
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.declared-users-only.digestauth.usersFile=path-to-file.ext",
|
||||
- "traefik.http.middlewares.declared-users-only.digestauth.usersFile=path-to-file.ext",
|
||||
```
|
||||
|
||||
!!! tip
|
||||
|
@ -68,7 +68,7 @@ You can customize the header field for the authenticated user using the `headerF
|
|||
??? example "File -- Passing Authenticated Users to Services Via Headers"
|
||||
|
||||
```toml
|
||||
[Middlewares.my-auth.digestauth]
|
||||
[http.middlewares.my-auth.digestauth]
|
||||
usersFile = "path-to-file.ext"
|
||||
headerField = "X-WebAuth-User" # header for the authenticated user
|
||||
```
|
||||
|
|
|
@ -15,18 +15,18 @@ The ErrorPage middleware returns a custom page in lieu of the default, according
|
|||
??? example "File -- Custom Error Page for 5XX"
|
||||
|
||||
```toml
|
||||
[Routers]
|
||||
[Routers.router1]
|
||||
[http.routers]
|
||||
[http.routers.router1]
|
||||
Service = "my-service"
|
||||
Rule = Host(`my-domain`)
|
||||
|
||||
[Middlewares]
|
||||
[Middlewares.5XX-errors.Errors]
|
||||
[http.middlewares]
|
||||
[http.middlewares.5XX-errors.Errors]
|
||||
status = ["500-599"]
|
||||
service = "error-handler-service"
|
||||
query = "/error.html"
|
||||
|
||||
[Services]
|
||||
[http.services]
|
||||
# ... definition of error-handler-service and my-service
|
||||
```
|
||||
|
||||
|
@ -36,9 +36,9 @@ The ErrorPage middleware returns a custom page in lieu of the default, according
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.test-errorpage.errors.status=500-599",
|
||||
- "traefik.middlewares.test-errorpage.errors.service=serviceError",
|
||||
- "traefik.middlewares.test-errorpage.errors.query=/{status}.html",
|
||||
- "traefik.http.middlewares.test-errorpage.errors.status=500-599",
|
||||
- "traefik.http.middlewares.test-errorpage.errors.service=serviceError",
|
||||
- "traefik.http.middlewares.test-errorpage.errors.query=/{status}.html",
|
||||
|
||||
```
|
||||
|
||||
|
|
|
@ -14,13 +14,13 @@ Otherwise, the response from the authentication server is returned.
|
|||
??? example "File -- Forward authentication to authserver.com"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-auth.forwardauth]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-auth.forwardauth]
|
||||
address = "https://authserver.com/auth"
|
||||
trustForwardHeader = true
|
||||
authResponseHeaders = ["X-Auth-User", "X-Secret"]
|
||||
|
||||
[Middlewares.test-auth.forwardauth.tls]
|
||||
[http.middlewares.test-auth.forwardauth.tls]
|
||||
ca = "path/to/local.crt"
|
||||
caOptional = true
|
||||
cert = "path/to/foo.cert"
|
||||
|
@ -33,14 +33,14 @@ Otherwise, the response from the authentication server is returned.
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.Middlewares.test-auth.ForwardAuth.Address=https://authserver.com/auth"
|
||||
- "traefik.Middlewares.test-auth.ForwardAuth.AuthResponseHeaders=X-Auth-User, X-Secret"
|
||||
- "traefik.Middlewares.test-auth.ForwardAuth.TLS.CA=path/to/local.crt"
|
||||
- "traefik.Middlewares.test-auth.ForwardAuth.TLS.CAOptional=true"
|
||||
- "traefik.Middlewares.test-auth.ForwardAuth.TLS.Cert=path/to/foo.cert"
|
||||
- "traefik.Middlewares.test-auth.ForwardAuth.TLS.InsecureSkipVerify=true"
|
||||
- "traefik.Middlewares.test-auth.ForwardAuth.TLS.Key=path/to/foo.key"
|
||||
- "traefik.Middlewares.test-auth.ForwardAuth.TrustForwardHeader=true"
|
||||
- "traefik.http.middlewares.test-auth.ForwardAuth.Address=https://authserver.com/auth"
|
||||
- "traefik.http.middlewares.test-auth.ForwardAuth.AuthResponseHeaders=X-Auth-User, X-Secret"
|
||||
- "traefik.http.middlewares.test-auth.ForwardAuth.TLS.CA=path/to/local.crt"
|
||||
- "traefik.http.middlewares.test-auth.ForwardAuth.TLS.CAOptional=true"
|
||||
- "traefik.http.middlewares.test-auth.ForwardAuth.TLS.Cert=path/to/foo.cert"
|
||||
- "traefik.http.middlewares.test-auth.ForwardAuth.TLS.InsecureSkipVerify=true"
|
||||
- "traefik.http.middlewares.test-auth.ForwardAuth.TLS.Key=path/to/foo.key"
|
||||
- "traefik.http.middlewares.test-auth.ForwardAuth.TrustForwardHeader=true"
|
||||
|
||||
```
|
||||
|
||||
|
|
|
@ -16,11 +16,11 @@ Add the `X-Script-Name` header to the proxied request and the `X-Custom-Response
|
|||
??? example "File"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.testHeader.headers]
|
||||
[Middlewares.testHeader.headers.CustomRequestHeaders]
|
||||
[http.middlewares]
|
||||
[http.middlewares.testHeader.headers]
|
||||
[http.middlewares.testHeader.headers.CustomRequestHeaders]
|
||||
X-Script-Name = "test"
|
||||
[Middlewares.testHeader.headers.CustomResponseHeaders]
|
||||
[http.middlewares.testHeader.headers.CustomResponseHeaders]
|
||||
X-Custom-Response-Header = "True"
|
||||
```
|
||||
|
||||
|
@ -30,8 +30,8 @@ Add the `X-Script-Name` header to the proxied request and the `X-Custom-Response
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.Middlewares.testHeader.Headers.CustomRequestHeaders.X-Script-Name=test",
|
||||
- "traefik.Middlewares.testHeader.Headers.CustomResponseHeaders.X-Custom-Response-Header=True",
|
||||
- "traefik.http.middlewares.testHeader.Headers.CustomRequestHeaders.X-Script-Name=test",
|
||||
- "traefik.http.middlewares.testHeader.Headers.CustomResponseHeaders.X-Custom-Response-Header=True",
|
||||
```
|
||||
|
||||
### Adding and Removing Headers
|
||||
|
@ -41,11 +41,11 @@ Add the `X-Script-Name` header to the proxied request and the `X-Custom-Response
|
|||
??? example "File"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.testHeader.headers]
|
||||
[Middlewares.testHeader.headers.CustomRequestHeaders]
|
||||
[http.middlewares]
|
||||
[http.middlewares.testHeader.headers]
|
||||
[http.middlewares.testHeader.headers.CustomRequestHeaders]
|
||||
X-Script-Name = "test"
|
||||
[Middlewares.testHeader.headers.CustomResponseHeaders]
|
||||
[http.middlewares.testHeader.headers.CustomResponseHeaders]
|
||||
X-Custom-Response-Header = "True"
|
||||
```
|
||||
|
||||
|
@ -55,8 +55,8 @@ Add the `X-Script-Name` header to the proxied request and the `X-Custom-Response
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.Middlewares.testHeader.Headers.CustomRequestHeaders.X-Script-Name=test",
|
||||
- "traefik.Middlewares.testHeader.Headers.CustomResponseHeaders.X-Custom-Response-Header=True",
|
||||
- "traefik.http.middlewares.testHeader.Headers.CustomRequestHeaders.X-Script-Name=test",
|
||||
- "traefik.http.middlewares.testHeader.Headers.CustomResponseHeaders.X-Custom-Response-Header=True",
|
||||
```
|
||||
|
||||
### Using Security Headers
|
||||
|
@ -67,8 +67,8 @@ This functionality allows for some easy security features to quickly be set.
|
|||
??? example "File"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.testHeader.headers]
|
||||
[http.middlewares]
|
||||
[http.middlewares.testHeader.headers]
|
||||
FrameDeny = true
|
||||
SSLRedirect = true
|
||||
```
|
||||
|
@ -79,8 +79,8 @@ This functionality allows for some easy security features to quickly be set.
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.Middlewares.testHeader.Headers.FrameDeny=true",
|
||||
- "traefik.Middlewares.testHeader.Headers.SSLRedirect=true",
|
||||
- "traefik.http.middlewares.testHeader.Headers.FrameDeny=true",
|
||||
- "traefik.http.middlewares.testHeader.Headers.SSLRedirect=true",
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
|
|
@ -12,8 +12,8 @@ IPWhitelist accepts / refuses requests based on the client IP.
|
|||
??? example "File -- Accepts request from defined IP"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-ipwhitelist.ipWhiteList]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-ipwhitelist.ipWhiteList]
|
||||
sourceRange = ["127.0.0.1/32", "192.168.1.7"]
|
||||
```
|
||||
|
||||
|
@ -23,7 +23,7 @@ IPWhitelist accepts / refuses requests based on the client IP.
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.Middlewares.Middleware9.IPWhiteList.SourceRange=127.0.0.1/32, 192.168.1.7"
|
||||
- "traefik.http.middlewares.Middleware9.IPWhiteList.SourceRange=127.0.0.1/32, 192.168.1.7"
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
@ -55,10 +55,10 @@ The `depth` option tells Traefik to use the `X-Forwarded-For` header and take th
|
|||
??? example "File -- Whitelisting Based on `X-Forwarded-For` with `depth=2`"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-ipwhitelist.ipWhiteList]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-ipwhitelist.ipWhiteList]
|
||||
sourceRange = ["127.0.0.1/32", "192.168.1.7"]
|
||||
[Middlewares.test-ipwhitelist.ipWhiteList.ipStrategy]
|
||||
[http.middlewares.test-ipwhitelist.ipWhiteList.ipStrategy]
|
||||
depth = 2
|
||||
```
|
||||
|
||||
|
@ -68,8 +68,8 @@ The `depth` option tells Traefik to use the `X-Forwarded-For` header and take th
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.Middlewares.testIPwhitelist.ipWhiteList.SourceRange=127.0.0.1/32, 192.168.1.7"
|
||||
- "traefik.middlewares.testIPwhitelist.ipwhitelist.ipstrategy.depth=2"
|
||||
- "traefik.http.middlewares.testIPwhitelist.ipWhiteList.SourceRange=127.0.0.1/32, 192.168.1.7"
|
||||
- "traefik.http.middlewares.testIPwhitelist.ipwhitelist.ipstrategy.depth=2"
|
||||
```
|
||||
|
||||
!!! note
|
||||
|
@ -97,9 +97,9 @@ The `depth` option tells Traefik to use the `X-Forwarded-For` header and take th
|
|||
??? example "File -- Exclude from `X-Forwarded-For`"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-ipwhitelist.ipWhiteList]
|
||||
[Middlewares.test-ipwhitelist.ipWhiteList.ipStrategy]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-ipwhitelist.ipWhiteList]
|
||||
[http.middlewares.test-ipwhitelist.ipWhiteList.ipStrategy]
|
||||
excludedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
||||
```
|
||||
|
||||
|
@ -109,5 +109,5 @@ The `depth` option tells Traefik to use the `X-Forwarded-For` header and take th
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.testIPwhitelist.ipwhitelist.ipstrategy.excludedIPs=127.0.0.1/32, 192.168.1.7"
|
||||
- "traefik.http.middlewares.testIPwhitelist.ipwhitelist.ipstrategy.excludedIPs=127.0.0.1/32, 192.168.1.7"
|
||||
```
|
||||
|
|
|
@ -12,8 +12,8 @@ To proactively prevent services from being overwhelmed with high load, a maximum
|
|||
??? example "File -- Limiting to 10 simultaneous connections"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-maxconn.maxconn]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-maxconn.maxconn]
|
||||
amount = 10
|
||||
```
|
||||
|
||||
|
@ -23,7 +23,7 @@ To proactively prevent services from being overwhelmed with high load, a maximum
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.test-maxconn.maxconn.amount=10"
|
||||
- "traefik.http.middlewares.test-maxconn.maxconn.amount=10"
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
|
|
@ -5,35 +5,35 @@ Tweaking the Request
|
|||
|
||||

|
||||
|
||||
Attached to the routers, pieces of middleware are a mean of tweaking the requests before they are sent to your [service](../routing/services.md) (or before the answer from the services are sent to the clients).
|
||||
Attached to the routers, pieces of middleware are a mean of tweaking the requests before they are sent to your [service](../routing/services/index.md) (or before the answer from the services are sent to the clients).
|
||||
|
||||
There are many different available middlewares in Traefik, some can modify the request, the headers, some are in charge of redirections, some add authentication, and so on.
|
||||
There are many different available middlewares in Traefik, some can modify the request, the headers, some are in charge of redirections, some add authentication, and so on.
|
||||
|
||||
Pieces of middleware can be combined in chains to fit every scenario.
|
||||
|
||||
## Configuration Example
|
||||
Pieces of middleware can be combined in chains to fit every scenario.
|
||||
|
||||
## Configuration Example
|
||||
|
||||
??? example "As Toml Configuration File"
|
||||
|
||||
```toml
|
||||
[providers]
|
||||
[providers.file]
|
||||
|
||||
[Routers]
|
||||
[Routers.router1]
|
||||
|
||||
[http.routers]
|
||||
[http.routers.router1]
|
||||
Service = "myService"
|
||||
Middlewares = ["foo-add-prefix"]
|
||||
Rule = "Host: example.com"
|
||||
|
||||
[Middlewares]
|
||||
[Middlewares.foo-add-prefix.AddPrefix]
|
||||
|
||||
[http.middlewares]
|
||||
[http.middlewares.foo-add-prefix.AddPrefix]
|
||||
prefix = "/foo"
|
||||
|
||||
[Services]
|
||||
[Services.service1]
|
||||
[Services.service1.LoadBalancer]
|
||||
|
||||
[[Services.service1.LoadBalancer.Servers]]
|
||||
|
||||
[http.services]
|
||||
[http.services.service1]
|
||||
[http.services.service1.LoadBalancer]
|
||||
|
||||
[[http.services.service1.LoadBalancer.Servers]]
|
||||
URL = "http://127.0.0.1:80"
|
||||
Weight = 1
|
||||
```
|
||||
|
@ -45,7 +45,7 @@ Pieces of middleware can be combined in chains to fit every scenario.
|
|||
whoami:
|
||||
image: containous/whoami # A container that exposes an API to show its IP address
|
||||
labels:
|
||||
- "traefik.middlewares.foo-add-prefix.addprefix.prefix=/foo",
|
||||
- "traefik.http.middlewares.foo-add-prefix.addprefix.prefix=/foo",
|
||||
```
|
||||
|
||||
## Advanced Configuration
|
||||
|
@ -58,25 +58,25 @@ If you use multiple `providers` and wish to reference a middleware declared in a
|
|||
??? abstract "Referencing a Middleware from Another Provider"
|
||||
|
||||
Declaring the add-foo-prefix in the file provider.
|
||||
|
||||
|
||||
```toml
|
||||
[providers]
|
||||
[providers.file]
|
||||
|
||||
[middlewares]
|
||||
[middlewares.add-foo-prefix.AddPrefix]
|
||||
|
||||
[http.middlewares]
|
||||
[http.middlewares.add-foo-prefix.AddPrefix]
|
||||
prefix = "/foo"
|
||||
```
|
||||
|
||||
Using the add-foo-prefix middleware from docker.
|
||||
|
||||
|
||||
```yaml
|
||||
your-container: #
|
||||
image: your-docker-image
|
||||
|
||||
image: your-docker-image
|
||||
|
||||
labels:
|
||||
# Attach file.add-foo-prefix middleware (declared in file)
|
||||
- "traefik.routers.middlewares=file.add-foo-prefix",
|
||||
- "traefik.http.routers.middlewares=file.add-foo-prefix",
|
||||
```
|
||||
|
||||
## Available Middlewares
|
||||
|
|
|
@ -12,8 +12,8 @@ PassTLSClientCert adds in header the selected data from the passed client tls ce
|
|||
??? example "File -- Pass the escaped pem in the `X-Forwarded-Tls-Client-Cert` header"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-passtlsclientcert.passtlsclientcert]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-passtlsclientcert.passtlsclientcert]
|
||||
pem = true
|
||||
```
|
||||
|
||||
|
@ -23,19 +23,19 @@ PassTLSClientCert adds in header the selected data from the passed client tls ce
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.Middleware11.passtlsclientcert.pem=true"
|
||||
- "traefik.http.middlewares.Middleware11.passtlsclientcert.pem=true"
|
||||
```
|
||||
|
||||
??? example "File -- Pass all the available info in the `X-Forwarded-Tls-Client-Cert-Info` header"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-passtlsclientcert.passtlsclientcert]
|
||||
[Middlewares.test-passtlsclientcert.passtlsclientcert.info]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-passtlsclientcert.passtlsclientcert]
|
||||
[http.middlewares.test-passtlsclientcert.passtlsclientcert.info]
|
||||
notAfter = true
|
||||
notBefore = true
|
||||
sans = true
|
||||
[Middlewares.test-passtlsclientcert.passtlsclientcert.info.subject]
|
||||
[http.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject]
|
||||
country = true
|
||||
province = true
|
||||
locality = true
|
||||
|
@ -43,7 +43,7 @@ PassTLSClientCert adds in header the selected data from the passed client tls ce
|
|||
commonName = true
|
||||
serialNumber = true
|
||||
domainComponent = true
|
||||
[Middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer]
|
||||
[http.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer]
|
||||
country = true
|
||||
province = true
|
||||
locality = true
|
||||
|
@ -59,23 +59,23 @@ PassTLSClientCert adds in header the selected data from the passed client tls ce
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.notafter=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.notbefore=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.sans=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.commonname=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.country=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.domaincomponent=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.locality=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.organization=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.province=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.serialnumber=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.commonname=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.country=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.domaincomponent=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.locality=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.organization=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.province=true"
|
||||
- "traefik.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.serialnumber=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.notafter=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.notbefore=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.sans=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.commonname=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.country=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.domaincomponent=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.locality=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.organization=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.province=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.subject.serialnumber=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.commonname=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.country=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.domaincomponent=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.locality=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.organization=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.province=true"
|
||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.serialnumber=true"
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
|
|
@ -12,11 +12,11 @@ The RateLimit middleware ensures that services will receive a _fair_ number of r
|
|||
??? example "Limit to 100 requests every 10 seconds (with a possible burst of 200)"
|
||||
|
||||
```toml
|
||||
[middlewares]
|
||||
[middlewares.fair-ratelimit.ratelimit]
|
||||
[http.middlewares]
|
||||
[http.middlewares.fair-ratelimit.ratelimit]
|
||||
extractorfunc = "client.ip"
|
||||
|
||||
[middlewares.fair-ratelimit.ratelimit.rateset1]
|
||||
[http.middlewares.fair-ratelimit.ratelimit.rateset1]
|
||||
period = "10s"
|
||||
average = 100
|
||||
burst = 200
|
||||
|
@ -25,16 +25,16 @@ The RateLimit middleware ensures that services will receive a _fair_ number of r
|
|||
??? example "Combine multiple limits"
|
||||
|
||||
```toml
|
||||
[middlewares]
|
||||
[middlewares.fair-ratelimit.ratelimit]
|
||||
[http.middlewares]
|
||||
[http.middlewares.fair-ratelimit.ratelimit]
|
||||
extractorfunc = "client.ip"
|
||||
|
||||
[middlewares.fair-ratelimit.ratelimit.rateset1]
|
||||
[http.middlewares.fair-ratelimit.ratelimit.rateset1]
|
||||
period = "10s"
|
||||
average = 100
|
||||
burst = 200
|
||||
|
||||
[middlewares.fair-ratelimit.ratelimit.rateset2]
|
||||
[http.middlewares.fair-ratelimit.ratelimit.rateset2]
|
||||
period = "3s"
|
||||
average = 5
|
||||
burst = 10
|
||||
|
|
|
@ -12,8 +12,8 @@ RegexRedirect redirect a request from an url to another with regex matching and
|
|||
??? example "File -- Redirect with domain replacement"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-redirectregex.redirectregex]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-redirectregex.redirectregex]
|
||||
regex = "^http://localhost/(.*)"
|
||||
replacement = "http://mydomain/$1"
|
||||
```
|
||||
|
@ -24,8 +24,8 @@ RegexRedirect redirect a request from an url to another with regex matching and
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.Middlewares.test-redirectregex.redirectregex.regex=^http://localhost/(.*)"
|
||||
- "traefik.Middlewares.test-redirectregex.redirectregex.replacement=http://mydomain/$1"
|
||||
- "traefik.http.middlewares.test-redirectregex.redirectregex.regex=^http://localhost/(.*)"
|
||||
- "traefik.http.middlewares.test-redirectregex.redirectregex.replacement=http://mydomain/$1"
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
|
|
@ -12,8 +12,8 @@ RegexRedirect redirect request from a scheme to another.
|
|||
??? example "File -- Redirect to https"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-redirectscheme.redirectscheme]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-redirectscheme.redirectscheme]
|
||||
scheme = "https"
|
||||
```
|
||||
|
||||
|
@ -23,7 +23,7 @@ RegexRedirect redirect request from a scheme to another.
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.Middlewares.test-redirectscheme.redirectscheme.scheme=https"
|
||||
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.scheme=https"
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
|
|
@ -12,8 +12,8 @@ Replace the path of the request url.
|
|||
??? example "File -- Replace the path by /foo"
|
||||
|
||||
```toml
|
||||
[Middlewares]
|
||||
[Middlewares.test-replacepath.ReplacePath]
|
||||
[http.middlewares]
|
||||
[http.middlewares.test-replacepath.ReplacePath]
|
||||
path = "/foo"
|
||||
```
|
||||
|
||||
|
@ -23,7 +23,7 @@ Replace the path of the request url.
|
|||
a-container:
|
||||
image: a-container-image
|
||||
labels:
|
||||
- "traefik.middlewares.test-replacepath.replacepath.path=/foo"
|
||||
- "traefik.http.middlewares.test-replacepath.replacepath.path=/foo"
|
||||
```
|
||||
|
||||
## Configuration Options
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue