Merge current v2.4 into master
This commit is contained in:
commit
ce2e02b690
119 changed files with 4628 additions and 4165 deletions
20
.github/workflows/check_doc.yml
vendored
Normal file
20
.github/workflows/check_doc.yml
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
name: Check Documentation
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
docs:
|
||||||
|
name: Check, verify and build documentation
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Check documentation
|
||||||
|
run: make docs-pull-images docs
|
|
@ -67,6 +67,7 @@
|
||||||
"scopelint", # Deprecated
|
"scopelint", # Deprecated
|
||||||
"interfacer", # Deprecated
|
"interfacer", # Deprecated
|
||||||
"maligned", # Deprecated
|
"maligned", # Deprecated
|
||||||
|
"golint", # Deprecated
|
||||||
"sqlclosecheck", # Not relevant (SQL)
|
"sqlclosecheck", # Not relevant (SQL)
|
||||||
"rowserrcheck", # Not relevant (SQL)
|
"rowserrcheck", # Not relevant (SQL)
|
||||||
"lll", # Not relevant
|
"lll", # Not relevant
|
||||||
|
@ -97,6 +98,7 @@
|
||||||
"unparam", # Too strict
|
"unparam", # Too strict
|
||||||
"godox", # Too strict
|
"godox", # Too strict
|
||||||
"forcetypeassert", # Too strict
|
"forcetypeassert", # Too strict
|
||||||
|
"tagliatelle", # Not compatible with current tags.
|
||||||
]
|
]
|
||||||
|
|
||||||
[issues]
|
[issues]
|
||||||
|
|
|
@ -16,7 +16,6 @@ env:
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- echo "Skipping tests... (Tests are executed on SemaphoreCI)"
|
- echo "Skipping tests... (Tests are executed on SemaphoreCI)"
|
||||||
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then travis_retry make docs-pull-images && make docs; fi
|
|
||||||
|
|
||||||
before_deploy:
|
before_deploy:
|
||||||
- >
|
- >
|
||||||
|
|
36
CHANGELOG.md
36
CHANGELOG.md
|
@ -1,3 +1,39 @@
|
||||||
|
## [v2.4.9](https://github.com/traefik/traefik/tree/v2.4.9) (2021-06-21)
|
||||||
|
[All Commits](https://github.com/traefik/traefik/compare/v2.4.8...v2.4.9)
|
||||||
|
|
||||||
|
**Bug fixes:**
|
||||||
|
- **[acme]** Update go-acme/lego to v4.4.0 ([#8179](https://github.com/traefik/traefik/pull/8179) by [ldez](https://github.com/ldez))
|
||||||
|
- **[acme]** Fix: ACME preferred chain. ([#8146](https://github.com/traefik/traefik/pull/8146) by [ldez](https://github.com/ldez))
|
||||||
|
- **[k8s,k8s/gatewayapi]** Remove error when HTTProutes is empty ([#8023](https://github.com/traefik/traefik/pull/8023) by [tomMoulard](https://github.com/tomMoulard))
|
||||||
|
- **[k8s,k8s/ingress]** Fix incorrect behaviour with multi-port endpoint subsets ([#8156](https://github.com/traefik/traefik/pull/8156) by [coufalja](https://github.com/coufalja))
|
||||||
|
- **[k8s,k8s/ingress]** Kubernetes ingress provider to search via all endpoints ([#7997](https://github.com/traefik/traefik/pull/7997) by [martinvizvary](https://github.com/martinvizvary))
|
||||||
|
- **[plugins,windows]** Fix plugin unzip call on windows ([#8136](https://github.com/traefik/traefik/pull/8136) by [ddtmachado](https://github.com/ddtmachado))
|
||||||
|
- **[plugins]** Update Yaegi to v0.9.17 ([#8100](https://github.com/traefik/traefik/pull/8100) by [ldez](https://github.com/ldez))
|
||||||
|
- **[provider]** Bump paerser to v0.1.4 ([#8116](https://github.com/traefik/traefik/pull/8116) by [ldez](https://github.com/ldez))
|
||||||
|
- **[server]** Create buffered signals channel ([#8190](https://github.com/traefik/traefik/pull/8190) by [dtomcej](https://github.com/dtomcej))
|
||||||
|
- **[server]** Fix: use defaultEntryPoints when no entryPoint is defined in a TCPRouter ([#8111](https://github.com/traefik/traefik/pull/8111) by [LandryBe](https://github.com/LandryBe))
|
||||||
|
- **[tls]** Use a dynamic buffer to handle client Hello SNI detection ([#8194](https://github.com/traefik/traefik/pull/8194) by [ldez](https://github.com/ldez))
|
||||||
|
- **[tracing]** Error span on 5xx only ([#8033](https://github.com/traefik/traefik/pull/8033) by [kevtainer](https://github.com/kevtainer))
|
||||||
|
|
||||||
|
**Documentation:**
|
||||||
|
- **[k8s,k8s/crd]** Fix ingressRouteTCP external name service examples in documentation ([#8120](https://github.com/traefik/traefik/pull/8120) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- **[k8s,k8s/gatewayapi]** Fix Kubernetes Gateway API documentation links ([#8063](https://github.com/traefik/traefik/pull/8063) by [jbdoumenjou](https://github.com/jbdoumenjou))
|
||||||
|
- **[k8s,k8s/gatewayapi]** Fix: k8s gateway api link ([#8085](https://github.com/traefik/traefik/pull/8085) by [tomMoulard](https://github.com/tomMoulard))
|
||||||
|
- **[k8s,k8s/gatewayapi]** Fix the "values" field in the example of httproute ([#8192](https://github.com/traefik/traefik/pull/8192) by [maelvls](https://github.com/maelvls))
|
||||||
|
- **[k8s/crd]** Fix ServersTransport documentation ([#8019](https://github.com/traefik/traefik/pull/8019) by [tomMoulard](https://github.com/tomMoulard))
|
||||||
|
- **[k8s]** Correct annotation option ([#8031](https://github.com/traefik/traefik/pull/8031) by [cbergmann](https://github.com/cbergmann))
|
||||||
|
- **[metrics]** Add metrics documentation ([#8007](https://github.com/traefik/traefik/pull/8007) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- **[middleware]** Docs: add examples for removing headers ([#8030](https://github.com/traefik/traefik/pull/8030) by [SuperSandro2000](https://github.com/SuperSandro2000))
|
||||||
|
- **[middleware]** Doc: clarify usage for ratelimit's excludedIPs ([#8072](https://github.com/traefik/traefik/pull/8072) by [mpl](https://github.com/mpl))
|
||||||
|
- **[middleware]** Elaborate on possible use of status codes with the errors middleware ([#8176](https://github.com/traefik/traefik/pull/8176) by [Midnighter](https://github.com/Midnighter))
|
||||||
|
- **[middleware]** Doc: fix a syntax error in ratelimit TOML configuration sample ([#8101](https://github.com/traefik/traefik/pull/8101) by [mvertes](https://github.com/mvertes))
|
||||||
|
- **[pilot]** Docs: add pilot dashboard flag to static configuration file reference ([#8152](https://github.com/traefik/traefik/pull/8152) by [danshilm](https://github.com/danshilm))
|
||||||
|
- Adding Maintainers Guidelines ([#8168](https://github.com/traefik/traefik/pull/8168) by [jakubhajek](https://github.com/jakubhajek))
|
||||||
|
- Explains Traefik HTTP response status codes ([#8170](https://github.com/traefik/traefik/pull/8170) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- Doc: typo fix ([#8026](https://github.com/traefik/traefik/pull/8026) by [mpl](https://github.com/mpl))
|
||||||
|
- Adding formatting to the document. ([#8180](https://github.com/traefik/traefik/pull/8180) by [jakubhajek](https://github.com/jakubhajek))
|
||||||
|
- Changing default file format for the snippets from TOML to YAML ([#8193](https://github.com/traefik/traefik/pull/8193) by [tomMoulard](https://github.com/tomMoulard))
|
||||||
|
|
||||||
## [v2.4.8](https://github.com/traefik/traefik/tree/v2.4.8) (2021-03-22)
|
## [v2.4.8](https://github.com/traefik/traefik/tree/v2.4.8) (2021-03-22)
|
||||||
[All Commits](https://github.com/traefik/traefik/compare/v2.4.7...v2.4.8)
|
[All Commits](https://github.com/traefik/traefik/compare/v2.4.7...v2.4.8)
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
- https://doc.traefik.io/traefik/contributing/submitting-pull-requests/
|
Here are some guidelines that should help to start contributing to the project.
|
||||||
- https://doc.traefik.io/traefik/contributing/submitting-issues/
|
|
||||||
|
- [Submitting pull Requests](https://github.com/traefik/contributors-guide/blob/master/pr_guidelines.md)
|
||||||
|
- [Submitting issues](https://doc.traefik.io/traefik/contributing/submitting-issues/)
|
||||||
|
- [Submitting security issues](docs/content/contributing/submitting-security-issues.md)
|
||||||
|
|
||||||
|
If you are willing to become a maintainer of the project, please take a look at the [maintainers guidelines](docs/content/contributing/maintainers-guidelines.md).
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
[![Build Status SemaphoreCI](https://semaphoreci.com/api/v1/containous/traefik/branches/master/shields_badge.svg)](https://semaphoreci.com/containous/traefik)
|
[![Build Status SemaphoreCI](https://semaphoreci.com/api/v1/containous/traefik/branches/master/shields_badge.svg)](https://semaphoreci.com/containous/traefik)
|
||||||
[![Docs](https://img.shields.io/badge/docs-current-brightgreen.svg)](https://doc.traefik.io/traefik)
|
[![Docs](https://img.shields.io/badge/docs-current-brightgreen.svg)](https://doc.traefik.io/traefik)
|
||||||
[![Go Report Card](https://goreportcard.com/badge/traefik/traefik)](https://goreportcard.com/report/traefik/traefik)
|
[![Go Report Card](https://goreportcard.com/badge/traefik/traefik)](https://goreportcard.com/report/traefik/traefik)
|
||||||
[![](https://images.microbadger.com/badges/image/traefik.svg)](https://microbadger.com/images/traefik)
|
|
||||||
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/traefik/traefik/blob/master/LICENSE.md)
|
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/traefik/traefik/blob/master/LICENSE.md)
|
||||||
[![Join the community support forum at https://community.traefik.io/](https://img.shields.io/badge/style-register-green.svg?style=social&label=Discourse)](https://community.traefik.io/)
|
[![Join the community support forum at https://community.traefik.io/](https://img.shields.io/badge/style-register-green.svg?style=social&label=Discourse)](https://community.traefik.io/)
|
||||||
[![Twitter](https://img.shields.io/twitter/follow/traefik.svg?style=social)](https://twitter.com/intent/follow?screen_name=traefik)
|
[![Twitter](https://img.shields.io/twitter/follow/traefik.svg?style=social)](https://twitter.com/intent/follow?screen_name=traefik)
|
||||||
|
@ -126,7 +125,10 @@ You can find high level and deep dive videos on [videos.traefik.io](https://vide
|
||||||
|
|
||||||
## Maintainers
|
## Maintainers
|
||||||
|
|
||||||
[Information about process and maintainers](docs/content/contributing/maintainers.md)
|
We are strongly promoting a philosophy of openness and sharing, and firmly standing against the elitist closed approach. Being part of the core team should be accessible to anyone who is motivated and want to be part of that journey!
|
||||||
|
This [document](docs/content/contributing/maintainers-guidelines.md) describes how to be part of the core team as well as various responsibilities and guidelines for Traefik maintainers.
|
||||||
|
You can also find more information on our process to review pull requests and manage issues [in this document](docs/content/contributing/maintainers.md).
|
||||||
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ RUN mkdir -p /usr/local/bin \
|
||||||
&& chmod +x /usr/local/bin/go-bindata
|
&& chmod +x /usr/local/bin/go-bindata
|
||||||
|
|
||||||
# Download golangci-lint binary to bin folder in $GOPATH
|
# Download golangci-lint binary to bin folder in $GOPATH
|
||||||
RUN curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | bash -s -- -b $GOPATH/bin v1.39.0
|
RUN curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | bash -s -- -b $GOPATH/bin v1.41.1
|
||||||
|
|
||||||
# Download misspell binary to bin folder in $GOPATH
|
# Download misspell binary to bin folder in $GOPATH
|
||||||
RUN curl -sfL https://raw.githubusercontent.com/client9/misspell/master/install-misspell.sh | bash -s -- -b $GOPATH/bin v0.3.4
|
RUN curl -sfL https://raw.githubusercontent.com/client9/misspell/master/install-misspell.sh | bash -s -- -b $GOPATH/bin v0.3.4
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
package cmd
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"os"
|
|
||||||
"os/signal"
|
|
||||||
"syscall"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ContextWithSignal creates a context canceled when SIGINT or SIGTERM are notified.
|
|
||||||
func ContextWithSignal(ctx context.Context) context.Context {
|
|
||||||
newCtx, cancel := context.WithCancel(ctx)
|
|
||||||
signals := make(chan os.Signal)
|
|
||||||
signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
|
|
||||||
go func() {
|
|
||||||
<-signals
|
|
||||||
cancel()
|
|
||||||
}()
|
|
||||||
return newCtx
|
|
||||||
}
|
|
|
@ -8,9 +8,11 @@ import (
|
||||||
stdlog "log"
|
stdlog "log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"os/signal"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/coreos/go-systemd/daemon"
|
"github.com/coreos/go-systemd/daemon"
|
||||||
|
@ -122,7 +124,7 @@ func runCmd(staticConfiguration *static.Configuration) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := cmd.ContextWithSignal(context.Background())
|
ctx, _ := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
|
||||||
if staticConfiguration.Experimental != nil && staticConfiguration.Experimental.DevPlugin != nil {
|
if staticConfiguration.Experimental != nil && staticConfiguration.Experimental.DevPlugin != nil {
|
||||||
var cancel context.CancelFunc
|
var cancel context.CancelFunc
|
||||||
|
|
|
@ -24,8 +24,8 @@ RUN apk --no-cache --no-progress add \
|
||||||
RUN npm config set unsafe-perm true
|
RUN npm config set unsafe-perm true
|
||||||
|
|
||||||
RUN npm install --global \
|
RUN npm install --global \
|
||||||
markdownlint@0.17.2 \
|
markdownlint@0.22.0 \
|
||||||
markdownlint-cli@0.19.0
|
markdownlint-cli@0.26.0
|
||||||
|
|
||||||
# Finally the shell tools we need for later
|
# Finally the shell tools we need for later
|
||||||
# tini helps to terminate properly all the parallelized tasks when sending CTRL-C
|
# tini helps to terminate properly all the parallelized tasks when sending CTRL-C
|
||||||
|
|
BIN
docs/content/assets/img/maintainers-guidelines.png
Normal file
BIN
docs/content/assets/img/maintainers-guidelines.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 966 KiB |
|
@ -10,18 +10,18 @@ For this very reason, the sendAnonymousUsage option is mandatory: we want you to
|
||||||
|
|
||||||
!!! example "Enabling Data Collection"
|
!!! example "Enabling Data Collection"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[global]
|
|
||||||
# Send anonymous usage data
|
|
||||||
sendAnonymousUsage = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
global:
|
global:
|
||||||
# Send anonymous usage data
|
# Send anonymous usage data
|
||||||
sendAnonymousUsage: true
|
sendAnonymousUsage: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[global]
|
||||||
|
# Send anonymous usage data
|
||||||
|
sendAnonymousUsage = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# Send anonymous usage data
|
# Send anonymous usage data
|
||||||
--global.sendAnonymousUsage
|
--global.sendAnonymousUsage
|
||||||
|
@ -52,42 +52,44 @@ Once a day (the first call begins 10 minutes after the start of Traefik), we col
|
||||||
|
|
||||||
### Example of Collected Data
|
### Example of Collected Data
|
||||||
|
|
||||||
```toml tab="Original configuration"
|
```yaml tab="Original configuration"
|
||||||
[entryPoints]
|
entryPoints:
|
||||||
[entryPoints.web]
|
web:
|
||||||
address = ":80"
|
address: ":80"
|
||||||
|
|
||||||
[api]
|
api: {}
|
||||||
|
|
||||||
[providers.docker]
|
providers:
|
||||||
endpoint = "tcp://10.10.10.10:2375"
|
docker:
|
||||||
exposedByDefault = true
|
endpoint: "tcp://10.10.10.10:2375"
|
||||||
swarmMode = true
|
exposedByDefault: true
|
||||||
|
swarmMode: true
|
||||||
|
|
||||||
[providers.docker.TLS]
|
tls:
|
||||||
ca = "dockerCA"
|
ca: dockerCA
|
||||||
cert = "dockerCert"
|
cert: dockerCert
|
||||||
key = "dockerKey"
|
key: dockerKey
|
||||||
insecureSkipVerify = true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="Resulting Obfuscated Configuration"
|
```yaml tab="Resulting Obfuscated Configuration"
|
||||||
[entryPoints]
|
entryPoints:
|
||||||
[entryPoints.web]
|
web:
|
||||||
address = ":80"
|
address: ":80"
|
||||||
|
|
||||||
[api]
|
api: {}
|
||||||
|
|
||||||
[providers.docker]
|
providers:
|
||||||
endpoint = "xxxx"
|
docker:
|
||||||
exposedByDefault = true
|
endpoint: "xxxx"
|
||||||
swarmMode = true
|
exposedByDefault: true
|
||||||
|
swarmMode: true
|
||||||
|
|
||||||
[providers.docker.TLS]
|
tls:
|
||||||
ca = "xxxx"
|
ca: xxxx
|
||||||
cert = "xxxx"
|
cert: xxxx
|
||||||
key = "xxxx"
|
key: xxxx
|
||||||
insecureSkipVerify = true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
## The Code for Data Collection
|
## The Code for Data Collection
|
||||||
|
|
|
@ -14,10 +14,10 @@ This [documentation](https://doc.traefik.io/traefik/) is built with [mkdocs](htt
|
||||||
|
|
||||||
### Method 1: `Docker` and `make`
|
### Method 1: `Docker` and `make`
|
||||||
|
|
||||||
You can build the documentation and test it locally (with live reloading), using the `docs` target:
|
You can build the documentation and test it locally (with live reloading), using the `docs-serve` target:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ make docs
|
$ make docs-serve
|
||||||
docker build -t traefik-docs -f docs.Dockerfile .
|
docker build -t traefik-docs -f docs.Dockerfile .
|
||||||
# […]
|
# […]
|
||||||
docker run --rm -v /home/user/go/github/traefik/traefik:/mkdocs -p 8000:8000 traefik-docs mkdocs serve
|
docker run --rm -v /home/user/go/github/traefik/traefik:/mkdocs -p 8000:8000 traefik-docs mkdocs serve
|
||||||
|
@ -85,10 +85,12 @@ Running ["HtmlCheck", "ImageCheck", "ScriptCheck", "LinkCheck"] on /app/site/bas
|
||||||
If you've made changes to the documentation, it's safter to clean it before verifying it.
|
If you've made changes to the documentation, it's safter to clean it before verifying it.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ make docs-clean docs-verify
|
$ make docs
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Will perform all necessary steps for you.
|
||||||
|
|
||||||
!!! note "Disabling Documentation Verification"
|
!!! note "Disabling Documentation Verification"
|
||||||
|
|
||||||
Verification can be disabled by setting the environment variable `DOCS_VERIFY_SKIP` to `true`:
|
Verification can be disabled by setting the environment variable `DOCS_VERIFY_SKIP` to `true`:
|
||||||
|
|
129
docs/content/contributing/maintainers-guidelines.md
Normal file
129
docs/content/contributing/maintainers-guidelines.md
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
# The Maintainers Guidelines
|
||||||
|
|
||||||
|
![Maintainers Guidelines](../assets/img/maintainers-guidelines.png)
|
||||||
|
|
||||||
|
Note: the document is a work in progress.
|
||||||
|
|
||||||
|
Welcome to the Traefik Community.
|
||||||
|
This document describes how to be part of the core team
|
||||||
|
as well as various responsibilities
|
||||||
|
and guidelines for Traefik maintainers.
|
||||||
|
We are strongly promoting a philosophy of openness and sharing,
|
||||||
|
and firmly standing against the elitist closed approach.
|
||||||
|
Being part of the core team should be accessible to anyone motivated
|
||||||
|
and wants to be part of that journey!
|
||||||
|
|
||||||
|
## Onboarding process
|
||||||
|
|
||||||
|
If you consider joining our community please drop us a line using Twitter or leave a note in the issue.
|
||||||
|
We will schedule a quick call to meet you and learn more about your motivation.
|
||||||
|
During the call, the team will discuss the process of becoming a maintainer.
|
||||||
|
We will be happy to answer any questions and explain all your doubts.
|
||||||
|
|
||||||
|
## Maintainers requirements
|
||||||
|
|
||||||
|
Note: you do not have to meet all the listed requirements,
|
||||||
|
but must have achieved several.
|
||||||
|
|
||||||
|
- Enabled [2FA](https://docs.github.com/en/github/authenticating-to-github/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication) on your Github account
|
||||||
|
- The contributor has opened and successfully run medium to large PR’s in the past 6 months.
|
||||||
|
- The contributor has participated in multiple code reviews of other PR’s,
|
||||||
|
including those of other maintainers and contributors.
|
||||||
|
- The contributor showed a consistent pattern of helpful, non-threatening, and friendly behavior towards other community members in the past.
|
||||||
|
- The contributor is active on Traefik Community forums
|
||||||
|
or other technical forums/boards such as K8S slack, Reddit, StackOverflow, hacker news.
|
||||||
|
- Have read and accepted the contributor guidelines.
|
||||||
|
|
||||||
|
## Maintainers responsibilities and privileges
|
||||||
|
|
||||||
|
There are lots of areas where you can contribute to the project,
|
||||||
|
but we can suggest you start with activities such as:
|
||||||
|
|
||||||
|
- PR reviewing.
|
||||||
|
- According to our guidelines we require you have at least 3 reviewers,
|
||||||
|
thus you can review a PR and leave the relevant comment if it is necessary.
|
||||||
|
- Participating in a daily [issue triage](https://github.com/traefik/contributors-guide/blob/master/issue_triage.md).
|
||||||
|
- The process helps to understand and prioritize the reported issue according to its importance and severity.
|
||||||
|
This is crucial to learn how our users implement Traefik.
|
||||||
|
Each of the issues that are labeled as bug/possible bug/confirmed requires a reproducible use case.
|
||||||
|
You can help in creating a reproducible use case if it has not been added to the issue
|
||||||
|
or use the sample code provided by the reporter.
|
||||||
|
Typically, a simple docker compose should be enough to reproduce the issue.
|
||||||
|
- Code contribution.
|
||||||
|
- Documentation contribution.
|
||||||
|
- Technical documentation is one of the most important components of the product.
|
||||||
|
The ability to set up a testing environment in a few minutes,
|
||||||
|
using the official documentation,
|
||||||
|
is a game changer.
|
||||||
|
- You will be listed on our Maintainers Github page
|
||||||
|
as well as on our website in the section [maintainers](maintainers.md).
|
||||||
|
- We will be promoting you on social channels (mostly on Twitter).
|
||||||
|
|
||||||
|
## Governance
|
||||||
|
|
||||||
|
- Roadmap meetings on a regular basis where all maintainers are welcome.
|
||||||
|
|
||||||
|
## Communicating
|
||||||
|
|
||||||
|
- All of our maintainers are added to Slack #traefik-maintainers channel that belongs to Traefik labs workspace.
|
||||||
|
Having the team in one place helps us to communicate effectively.
|
||||||
|
You can reach Traefik core developers directly,
|
||||||
|
which offers the possibility to discuss issues, pull requests, enhancements more efficiently
|
||||||
|
and get the feedback almost immediately.
|
||||||
|
Fewer blockers mean more fun and engaging work.
|
||||||
|
|
||||||
|
- On a daily basis, we publish a report that includes all the activities performed during the day.
|
||||||
|
You are updated in regard to the workload that has been processed including:
|
||||||
|
working on the new features and enhancements,
|
||||||
|
activities related to the reported issues and PR’s,
|
||||||
|
other important project-related announcements.
|
||||||
|
|
||||||
|
- At 5:00 PM CET every day we review all the created issues that have been reported,
|
||||||
|
assign them the appropriate *[labels](maintainers.md#labels)*
|
||||||
|
and prioritize them based on the severity of the problem.
|
||||||
|
The process is called *[issue triaging](https://github.com/traefik/contributors-guide/blob/master/issue_triage.md)*.
|
||||||
|
Each of the maintainers is welcome to join the meeting.
|
||||||
|
For that purpose, we use a dedicated Discord server
|
||||||
|
where you are invited once you have become the official maintainer.
|
||||||
|
|
||||||
|
## Maintainers Activity
|
||||||
|
|
||||||
|
In order to keep the core team efficient and dynamic,
|
||||||
|
maintainers' activity and involvement will be reviewed on a regular basis.
|
||||||
|
|
||||||
|
- Has the maintainer engaged with the team and the community by meeting two or more of these benchmarks in the past six months?
|
||||||
|
- Has the maintainer participated in at least two or three maintainer meetings?
|
||||||
|
- Substantial review of at least one or two PRs from either contributors or maintainers.
|
||||||
|
- Opened at least one or two bug fixes or feature request PRs
|
||||||
|
that were eventually merged (or on a trajectory for merge).
|
||||||
|
- Substantial participation in the Help Wanted program (answered questions, helped identify issues, applied guidelines from the Help Wanted guide to open issues).
|
||||||
|
- Substantial participation with the community in general.
|
||||||
|
|
||||||
|
- Has the maintainer shown a consistent pattern of helpful,
|
||||||
|
non-threatening,
|
||||||
|
and friendly behavior towards other people on the maintainer team and with our community?
|
||||||
|
|
||||||
|
## Additional comments for (not only) maintainers
|
||||||
|
|
||||||
|
- Be able to put yourself in users’ shoes.
|
||||||
|
- Be open-minded and respectful with other maintainers and other community members.
|
||||||
|
- Keep the communication public -
|
||||||
|
if anyone tries to communicate with you directly,
|
||||||
|
ask him politely to move the conversation to a public communication channel.
|
||||||
|
- Stay away from defensive comments.
|
||||||
|
- Please try to express your thoughts clearly enough
|
||||||
|
and note that some of us are not native English speakers.
|
||||||
|
Try to rephrase your sentences, avoiding mental shortcuts;
|
||||||
|
none of us is able to predict your thoughts.
|
||||||
|
- There are a lot of use cases of using Traefik
|
||||||
|
and even more issues that are difficult to reproduce.
|
||||||
|
If the issue can’t be replicated due to a lack of reproducible case (a simple docker compose should be enough) -
|
||||||
|
set your time limits while working on the issue
|
||||||
|
and express clearly that you were not able to replicate it.
|
||||||
|
You can come back later to that case.
|
||||||
|
- Be proactive.
|
||||||
|
- Emoji are fine,
|
||||||
|
but if you express yourself clearly enough they are not necessary.
|
||||||
|
They will not replace good communication.
|
||||||
|
- Embrace mentorship.
|
||||||
|
- Keep in mind that we all have the same intent to improve the project.
|
|
@ -20,6 +20,10 @@
|
||||||
* Kevin Pollet [@kevinpollet](https://github.com/kevinpollet)
|
* Kevin Pollet [@kevinpollet](https://github.com/kevinpollet)
|
||||||
* Harold Ozouf [@jspdown](https://github.com/jspdown)
|
* Harold Ozouf [@jspdown](https://github.com/jspdown)
|
||||||
|
|
||||||
|
## Maintainers guidelines
|
||||||
|
|
||||||
|
Please read the [maintainers guidelines](maintainers-guidelines.md)
|
||||||
|
|
||||||
## Issue Triage
|
## Issue Triage
|
||||||
|
|
||||||
Issues and PRs are triaged daily and the process for triaging may be found under [triaging issues](https://github.com/traefik/contributors-guide/blob/master/issue_triage.md) in our [contributors guide repository](https://github.com/traefik/contributors-guide).
|
Issues and PRs are triaged daily and the process for triaging may be found under [triaging issues](https://github.com/traefik/contributors-guide/blob/master/issue_triage.md) in our [contributors guide repository](https://github.com/traefik/contributors-guide).
|
||||||
|
|
|
@ -51,7 +51,7 @@ Once positioned, this option sets (and resets) all the default values of the sub
|
||||||
|
|
||||||
### Configuration File
|
### Configuration File
|
||||||
|
|
||||||
At startup, Traefik searches for a file named `traefik.toml` (or `traefik.yml` or `traefik.yaml`) in:
|
At startup, Traefik searches for a file named `traefik.yml` (or `traefik.yaml` or `traefik.toml`) in:
|
||||||
|
|
||||||
- `/etc/traefik/`
|
- `/etc/traefik/`
|
||||||
- `$XDG_CONFIG_HOME/`
|
- `$XDG_CONFIG_HOME/`
|
||||||
|
@ -61,7 +61,7 @@ At startup, Traefik searches for a file named `traefik.toml` (or `traefik.yml` o
|
||||||
You can override this using the `configFile` argument.
|
You can override this using the `configFile` argument.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
traefik --configFile=foo/bar/myconfigfile.toml
|
traefik --configFile=foo/bar/myconfigfile.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
### Arguments
|
### Arguments
|
||||||
|
|
126
docs/content/getting-started/faq.md
Normal file
126
docs/content/getting-started/faq.md
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
# FAQ
|
||||||
|
|
||||||
|
## Why is Traefik Answering `XXX` HTTP Response Status Code?
|
||||||
|
|
||||||
|
Traefik is a dynamic reverse proxy,
|
||||||
|
and while the documentation often demonstrates configuration options through file examples,
|
||||||
|
the core feature of Traefik is its dynamic configurability,
|
||||||
|
directly reacting to changes from providers over time.
|
||||||
|
|
||||||
|
Notably, a part of the configuration is [static](../configuration-overview/#the-static-configuration),
|
||||||
|
and can be provided by a file on startup, whereas various providers,
|
||||||
|
such as the file provider,
|
||||||
|
contribute dynamically all along the traefik instance lifetime to its [dynamic configuration](../configuration-overview/#the-dynamic-configuration) changes.
|
||||||
|
|
||||||
|
In addition, the configuration englobes concepts such as the EntryPoint which can be seen as a listener on the Transport Layer (TCP),
|
||||||
|
as apposed to the Router which is more about the Presentation (TLS) and Application layers (HTTP).
|
||||||
|
And there can be as many routers as one wishes for a given EntryPoint.
|
||||||
|
|
||||||
|
In other words, for a given Entrypoint,
|
||||||
|
at any given time the traffic seen is not bound to be just about one protocol.
|
||||||
|
It could be HTTP, or otherwise. Over TLS, or not.
|
||||||
|
Not to mention that dynamic configuration changes potentially make that kind of traffic vary over time.
|
||||||
|
|
||||||
|
Therefore, in this dynamic context,
|
||||||
|
the static configuration of an `entryPoint` does not give any hint whatsoever about how the traffic going through that `entryPoint` is going to be routed.
|
||||||
|
Or whether it's even going to be routed at all,
|
||||||
|
i.e. whether there is a Router matching the kind of traffic going through it.
|
||||||
|
|
||||||
|
### `404 Not found`
|
||||||
|
|
||||||
|
Traefik returns a `404` response code in the following situations:
|
||||||
|
|
||||||
|
- A request reaching an EntryPoint that has no Routers
|
||||||
|
- An HTTP request reaching an EntryPoint that has no HTTP Router
|
||||||
|
- An HTTPS request reaching an EntryPoint that has no HTTPS Router
|
||||||
|
- A request reaching an EntryPoint that has HTTP/HTTPS Routers that cannot be matched
|
||||||
|
|
||||||
|
From Traefik's point of view,
|
||||||
|
every time a request cannot be matched with a router the correct response code is a `404 Not found`.
|
||||||
|
|
||||||
|
In this situation, the response code is not a `503 Service Unavailable`
|
||||||
|
because Traefik is not able to confirm that the lack of a matching router for a request is only temporary.
|
||||||
|
Traefik's routing configuration is dynamic and aggregated from different providers,
|
||||||
|
hence it's not possible to assume at any moment that a specific route should be handled or not.
|
||||||
|
|
||||||
|
??? info "This behavior is consistent with rfc7231"
|
||||||
|
|
||||||
|
```txt
|
||||||
|
The server is currently unable to handle the request due to a
|
||||||
|
temporary overloading or maintenance of the server. The implication
|
||||||
|
is that this is a temporary condition which will be alleviated after
|
||||||
|
some delay. If known, the length of the delay MAY be indicated in a
|
||||||
|
Retry-After header. If no Retry-After is given, the client SHOULD
|
||||||
|
handle the response as it would for a 500 response.
|
||||||
|
|
||||||
|
Note: The existence of the 503 status code does not imply that a
|
||||||
|
server must use it when becoming overloaded. Some servers may wish
|
||||||
|
to simply refuse the connection.
|
||||||
|
```
|
||||||
|
|
||||||
|
Extract from [rfc7231#section-6.6.4](https://datatracker.ietf.org/doc/html/rfc7231#section-6.6.4).
|
||||||
|
|
||||||
|
### `502 Bad Gateway`
|
||||||
|
|
||||||
|
Traefik returns a `502` response code when an error happens while contacting the upstream service.
|
||||||
|
|
||||||
|
### `503 Service Unavailable`
|
||||||
|
|
||||||
|
Traefik returns a `503` response code when a Router has been matched
|
||||||
|
but there are no servers ready to handle the request.
|
||||||
|
|
||||||
|
This situation is encountered when a service has been explicitly configured without servers,
|
||||||
|
or when a service has healthcheck enabled and all servers are unhealthy.
|
||||||
|
|
||||||
|
### `XXX` Instead of `404`
|
||||||
|
|
||||||
|
Sometimes, the `404` response code doesn't play well with other parties or services (such as CDNs).
|
||||||
|
|
||||||
|
In these situations, you may want Traefik to always reply with a `503` response code,
|
||||||
|
instead of a `404` response code.
|
||||||
|
|
||||||
|
To achieve this behavior, a simple catchall router,
|
||||||
|
with the lowest possible priority and routing to a service without servers,
|
||||||
|
can handle all the requests when no other router has been matched.
|
||||||
|
|
||||||
|
The example below is a file provider only version (`yaml`) of what this configuration could look like:
|
||||||
|
|
||||||
|
```yaml tab="Static configuration"
|
||||||
|
# traefik.yml
|
||||||
|
|
||||||
|
entrypoints:
|
||||||
|
web:
|
||||||
|
address: :80
|
||||||
|
|
||||||
|
providers:
|
||||||
|
file:
|
||||||
|
filename: dynamic.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml tab="Dynamic configuration"
|
||||||
|
# dynamic.yaml
|
||||||
|
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
catchall:
|
||||||
|
# attached only to web entryPoint
|
||||||
|
entryPoints:
|
||||||
|
- "web"
|
||||||
|
# catchall rule
|
||||||
|
rule: "PathPrefix(`/`)"
|
||||||
|
service: unavailable
|
||||||
|
# lowest possible priority
|
||||||
|
# evaluated when no other router is matched
|
||||||
|
priority: 1
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Service that will always answer a 503 Service Unavailable response
|
||||||
|
unavailable:
|
||||||
|
loadBalancer:
|
||||||
|
servers: {}
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! info "Dedicated service"
|
||||||
|
If there is a need for a response code other than a `503` and/or a custom message,
|
||||||
|
the principle of the above example above (a catchall router) still stands,
|
||||||
|
but the `unavailable` service should be adapted to fit such a need.
|
|
@ -11,12 +11,12 @@ You can install Traefik with the following flavors:
|
||||||
|
|
||||||
Choose one of the [official Docker images](https://hub.docker.com/_/traefik) and run it with one sample configuration file:
|
Choose one of the [official Docker images](https://hub.docker.com/_/traefik) and run it with one sample configuration file:
|
||||||
|
|
||||||
* [TOML](https://raw.githubusercontent.com/traefik/traefik/v2.4/traefik.sample.toml)
|
|
||||||
* [YAML](https://raw.githubusercontent.com/traefik/traefik/v2.4/traefik.sample.yml)
|
* [YAML](https://raw.githubusercontent.com/traefik/traefik/v2.4/traefik.sample.yml)
|
||||||
|
* [TOML](https://raw.githubusercontent.com/traefik/traefik/v2.4/traefik.sample.toml)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker run -d -p 8080:8080 -p 80:80 \
|
docker run -d -p 8080:8080 -p 80:80 \
|
||||||
-v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik:v2.4
|
-v $PWD/traefik.yml:/etc/traefik/traefik.yml traefik:v2.4
|
||||||
```
|
```
|
||||||
|
|
||||||
For more details, go to the [Docker provider documentation](../providers/docker.md)
|
For more details, go to the [Docker provider documentation](../providers/docker.md)
|
||||||
|
|
|
@ -30,14 +30,14 @@ You can read more about this retrieval mechanism in the following section: [ACME
|
||||||
There are many available options for ACME.
|
There are many available options for ACME.
|
||||||
For a quick glance at what's possible, browse the configuration reference:
|
For a quick glance at what's possible, browse the configuration reference:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
--8<-- "content/https/ref-acme.toml"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
--8<-- "content/https/ref-acme.yaml"
|
--8<-- "content/https/ref-acme.yaml"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
--8<-- "content/https/ref-acme.toml"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--8<-- "content/https/ref-acme.txt"
|
--8<-- "content/https/ref-acme.txt"
|
||||||
```
|
```
|
||||||
|
@ -70,22 +70,6 @@ Please check the [configuration examples below](#configuration-examples) for mor
|
||||||
|
|
||||||
??? example "Enabling ACME"
|
??? example "Enabling ACME"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
email = "your-email@example.com"
|
|
||||||
storage = "acme.json"
|
|
||||||
[certificatesResolvers.myresolver.acme.httpChallenge]
|
|
||||||
# used during the challenge
|
|
||||||
entryPoint = "web"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
web:
|
web:
|
||||||
|
@ -104,6 +88,22 @@ Please check the [configuration examples below](#configuration-examples) for mor
|
||||||
entryPoint: web
|
entryPoint: web
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
email = "your-email@example.com"
|
||||||
|
storage = "acme.json"
|
||||||
|
[certificatesResolvers.myresolver.acme.httpChallenge]
|
||||||
|
# used during the challenge
|
||||||
|
entryPoint = "web"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.web.address=:80
|
--entrypoints.web.address=:80
|
||||||
--entrypoints.websecure.address=:443
|
--entrypoints.websecure.address=:443
|
||||||
|
@ -165,12 +165,6 @@ when using the `TLS-ALPN-01` challenge, Traefik must be reachable by Let's Encry
|
||||||
|
|
||||||
??? example "Configuring the `tlsChallenge`"
|
??? example "Configuring the `tlsChallenge`"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
# ...
|
|
||||||
[certificatesResolvers.myresolver.acme.tlsChallenge]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
myresolver:
|
myresolver:
|
||||||
|
@ -179,6 +173,12 @@ when using the `TLS-ALPN-01` challenge, Traefik must be reachable by Let's Encry
|
||||||
tlsChallenge: {}
|
tlsChallenge: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
# ...
|
||||||
|
[certificatesResolvers.myresolver.acme.tlsChallenge]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# ...
|
# ...
|
||||||
--certificatesresolvers.myresolver.acme.tlschallenge=true
|
--certificatesresolvers.myresolver.acme.tlschallenge=true
|
||||||
|
@ -193,20 +193,6 @@ when using the `HTTP-01` challenge, `certificatesresolvers.myresolver.acme.httpc
|
||||||
|
|
||||||
??? example "Using an EntryPoint Called web for the `httpChallenge`"
|
??? example "Using an EntryPoint Called web for the `httpChallenge`"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
# ...
|
|
||||||
[certificatesResolvers.myresolver.acme.httpChallenge]
|
|
||||||
entryPoint = "web"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
web:
|
web:
|
||||||
|
@ -223,6 +209,20 @@ when using the `HTTP-01` challenge, `certificatesresolvers.myresolver.acme.httpc
|
||||||
entryPoint: web
|
entryPoint: web
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
# ...
|
||||||
|
[certificatesResolvers.myresolver.acme.httpChallenge]
|
||||||
|
entryPoint = "web"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.web.address=:80
|
--entrypoints.web.address=:80
|
||||||
--entrypoints.websecure.address=:443
|
--entrypoints.websecure.address=:443
|
||||||
|
@ -239,15 +239,6 @@ Use the `DNS-01` challenge to generate and renew ACME certificates by provisioni
|
||||||
|
|
||||||
??? example "Configuring a `dnsChallenge` with the DigitalOcean Provider"
|
??? example "Configuring a `dnsChallenge` with the DigitalOcean Provider"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
# ...
|
|
||||||
[certificatesResolvers.myresolver.acme.dnsChallenge]
|
|
||||||
provider = "digitalocean"
|
|
||||||
delayBeforeCheck = 0
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
myresolver:
|
myresolver:
|
||||||
|
@ -259,6 +250,15 @@ Use the `DNS-01` challenge to generate and renew ACME certificates by provisioni
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
# ...
|
||||||
|
[certificatesResolvers.myresolver.acme.dnsChallenge]
|
||||||
|
provider = "digitalocean"
|
||||||
|
delayBeforeCheck = 0
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# ...
|
# ...
|
||||||
--certificatesresolvers.myresolver.acme.dnschallenge.provider=digitalocean
|
--certificatesresolvers.myresolver.acme.dnschallenge.provider=digitalocean
|
||||||
|
@ -323,6 +323,7 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
||||||
| HTTP request | `httpreq` | `HTTPREQ_ENDPOINT`, `HTTPREQ_MODE`, `HTTPREQ_USERNAME`, `HTTPREQ_PASSWORD` [^1] | [Additional configuration](https://go-acme.github.io/lego/dns/httpreq) |
|
| HTTP request | `httpreq` | `HTTPREQ_ENDPOINT`, `HTTPREQ_MODE`, `HTTPREQ_USERNAME`, `HTTPREQ_PASSWORD` [^1] | [Additional configuration](https://go-acme.github.io/lego/dns/httpreq) |
|
||||||
| [HyperOne](https://www.hyperone.com) | `hyperone` | `HYPERONE_PASSPORT_LOCATION`, `HYPERONE_LOCATION_ID` | [Additional configuration](https://go-acme.github.io/lego/dns/hyperone) |
|
| [HyperOne](https://www.hyperone.com) | `hyperone` | `HYPERONE_PASSPORT_LOCATION`, `HYPERONE_LOCATION_ID` | [Additional configuration](https://go-acme.github.io/lego/dns/hyperone) |
|
||||||
| [IIJ](https://www.iij.ad.jp/) | `iij` | `IIJ_API_ACCESS_KEY`, `IIJ_API_SECRET_KEY`, `IIJ_DO_SERVICE_CODE` | [Additional configuration](https://go-acme.github.io/lego/dns/iij) |
|
| [IIJ](https://www.iij.ad.jp/) | `iij` | `IIJ_API_ACCESS_KEY`, `IIJ_API_SECRET_KEY`, `IIJ_DO_SERVICE_CODE` | [Additional configuration](https://go-acme.github.io/lego/dns/iij) |
|
||||||
|
| [Infoblox](https://www.infoblox.com/) | `infoblox` | `INFOBLOX_USER`, `INFOBLOX_PASSWORD`, `INFOBLOX_HOST` | [Additional configuration](https://go-acme.github.io/lego/dns/infoblox) |
|
||||||
| [Infomaniak](https://www.infomaniak.com) | `infomaniak` | `INFOMANIAK_ACCESS_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/infomaniak) |
|
| [Infomaniak](https://www.infomaniak.com) | `infomaniak` | `INFOMANIAK_ACCESS_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/infomaniak) |
|
||||||
| [INWX](https://www.inwx.de/en) | `inwx` | `INWX_USERNAME`, `INWX_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/inwx) |
|
| [INWX](https://www.inwx.de/en) | `inwx` | `INWX_USERNAME`, `INWX_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/inwx) |
|
||||||
| [ionos](https://ionos.com/) | `ionos` | `IONOS_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/ionos) |
|
| [ionos](https://ionos.com/) | `ionos` | `IONOS_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/ionos) |
|
||||||
|
@ -347,6 +348,7 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
||||||
| [OVH](https://www.ovh.com) | `ovh` | `OVH_ENDPOINT`, `OVH_APPLICATION_KEY`, `OVH_APPLICATION_SECRET`, `OVH_CONSUMER_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/ovh) |
|
| [OVH](https://www.ovh.com) | `ovh` | `OVH_ENDPOINT`, `OVH_APPLICATION_KEY`, `OVH_APPLICATION_SECRET`, `OVH_CONSUMER_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/ovh) |
|
||||||
| [Openstack Designate](https://docs.openstack.org/designate) | `designate` | `OS_AUTH_URL`, `OS_USERNAME`, `OS_PASSWORD`, `OS_TENANT_NAME`, `OS_REGION_NAME` | [Additional configuration](https://go-acme.github.io/lego/dns/designate) |
|
| [Openstack Designate](https://docs.openstack.org/designate) | `designate` | `OS_AUTH_URL`, `OS_USERNAME`, `OS_PASSWORD`, `OS_TENANT_NAME`, `OS_REGION_NAME` | [Additional configuration](https://go-acme.github.io/lego/dns/designate) |
|
||||||
| [Oracle Cloud](https://cloud.oracle.com/home) | `oraclecloud` | `OCI_COMPARTMENT_OCID`, `OCI_PRIVKEY_FILE`, `OCI_PRIVKEY_PASS`, `OCI_PUBKEY_FINGERPRINT`, `OCI_REGION`, `OCI_TENANCY_OCID`, `OCI_USER_OCID` | [Additional configuration](https://go-acme.github.io/lego/dns/oraclecloud) |
|
| [Oracle Cloud](https://cloud.oracle.com/home) | `oraclecloud` | `OCI_COMPARTMENT_OCID`, `OCI_PRIVKEY_FILE`, `OCI_PRIVKEY_PASS`, `OCI_PUBKEY_FINGERPRINT`, `OCI_REGION`, `OCI_TENANCY_OCID`, `OCI_USER_OCID` | [Additional configuration](https://go-acme.github.io/lego/dns/oraclecloud) |
|
||||||
|
| [Porkbun](https://porkbun.com/) | `porkbun` | `PORKBUN_SECRET_API_KEY`, `PORKBUN_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/porkbun) |
|
||||||
| [PowerDNS](https://www.powerdns.com) | `pdns` | `PDNS_API_KEY`, `PDNS_API_URL` | [Additional configuration](https://go-acme.github.io/lego/dns/pdns) |
|
| [PowerDNS](https://www.powerdns.com) | `pdns` | `PDNS_API_KEY`, `PDNS_API_URL` | [Additional configuration](https://go-acme.github.io/lego/dns/pdns) |
|
||||||
| [Rackspace](https://www.rackspace.com/cloud/dns) | `rackspace` | `RACKSPACE_USER`, `RACKSPACE_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/rackspace) |
|
| [Rackspace](https://www.rackspace.com/cloud/dns) | `rackspace` | `RACKSPACE_USER`, `RACKSPACE_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/rackspace) |
|
||||||
| [reg.ru](https://www.reg.ru) | `regru` | `REGRU_USERNAME`, `REGRU_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/regru) |
|
| [reg.ru](https://www.reg.ru) | `regru` | `REGRU_USERNAME`, `REGRU_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/regru) |
|
||||||
|
@ -357,12 +359,16 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
||||||
| [Scaleway](https://www.scaleway.com) | `scaleway` | `SCALEWAY_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/scaleway) |
|
| [Scaleway](https://www.scaleway.com) | `scaleway` | `SCALEWAY_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/scaleway) |
|
||||||
| [Selectel](https://selectel.ru/en/) | `selectel` | `SELECTEL_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/selectel) |
|
| [Selectel](https://selectel.ru/en/) | `selectel` | `SELECTEL_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/selectel) |
|
||||||
| [Servercow](https://servercow.de) | `servercow` | `SERVERCOW_USERNAME`, `SERVERCOW_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/servercow) |
|
| [Servercow](https://servercow.de) | `servercow` | `SERVERCOW_USERNAME`, `SERVERCOW_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/servercow) |
|
||||||
|
| [Simply.com](https://www.simply.com/en/domains/) | `simply` | `SIMPLY_ACCOUNT_NAME`, `SIMPLY_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/simply) |
|
||||||
|
| [Sonic](https://www.sonic.com/) | `sonic` | `SONIC_USER_ID`, `SONIC_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/sonic) |
|
||||||
| [Stackpath](https://www.stackpath.com/) | `stackpath` | `STACKPATH_CLIENT_ID`, `STACKPATH_CLIENT_SECRET`, `STACKPATH_STACK_ID` | [Additional configuration](https://go-acme.github.io/lego/dns/stackpath) |
|
| [Stackpath](https://www.stackpath.com/) | `stackpath` | `STACKPATH_CLIENT_ID`, `STACKPATH_CLIENT_SECRET`, `STACKPATH_STACK_ID` | [Additional configuration](https://go-acme.github.io/lego/dns/stackpath) |
|
||||||
| [TransIP](https://www.transip.nl/) | `transip` | `TRANSIP_ACCOUNT_NAME`, `TRANSIP_PRIVATE_KEY_PATH` | [Additional configuration](https://go-acme.github.io/lego/dns/transip) |
|
| [TransIP](https://www.transip.nl/) | `transip` | `TRANSIP_ACCOUNT_NAME`, `TRANSIP_PRIVATE_KEY_PATH` | [Additional configuration](https://go-acme.github.io/lego/dns/transip) |
|
||||||
| [VegaDNS](https://github.com/shupp/VegaDNS-API) | `vegadns` | `SECRET_VEGADNS_KEY`, `SECRET_VEGADNS_SECRET`, `VEGADNS_URL` | [Additional configuration](https://go-acme.github.io/lego/dns/vegadns) |
|
| [VegaDNS](https://github.com/shupp/VegaDNS-API) | `vegadns` | `SECRET_VEGADNS_KEY`, `SECRET_VEGADNS_SECRET`, `VEGADNS_URL` | [Additional configuration](https://go-acme.github.io/lego/dns/vegadns) |
|
||||||
| [Versio](https://www.versio.nl/domeinnamen) | `versio` | `VERSIO_USERNAME`, `VERSIO_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/versio) |
|
| [Versio](https://www.versio.nl/domeinnamen) | `versio` | `VERSIO_USERNAME`, `VERSIO_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/versio) |
|
||||||
|
| [VinylDNS](https://www.vinyldns.io) | `vinyldns` | `VINYLDNS_ACCESS_KEY`, `VINYLDNS_SECRET_KEY`, `VINYLDNS_HOST` | [Additional configuration](https://go-acme.github.io/lego/dns/vinyldns) |
|
||||||
| [Vscale](https://vscale.io/) | `vscale` | `VSCALE_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/vscale) |
|
| [Vscale](https://vscale.io/) | `vscale` | `VSCALE_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/vscale) |
|
||||||
| [VULTR](https://www.vultr.com) | `vultr` | `VULTR_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/vultr) |
|
| [VULTR](https://www.vultr.com) | `vultr` | `VULTR_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/vultr) |
|
||||||
|
| [WEDOS](https://www.wedos.com) | `wedos` | `WEDOS_USERNAME`, `WEDOS_WAPI_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/wedos) |
|
||||||
| [Yandex](https://yandex.com) | `yandex` | `YANDEX_PDD_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/yandex) |
|
| [Yandex](https://yandex.com) | `yandex` | `YANDEX_PDD_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/yandex) |
|
||||||
| [Zone.ee](https://www.zone.ee) | `zoneee` | `ZONEEE_API_USER`, `ZONEEE_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/zoneee) |
|
| [Zone.ee](https://www.zone.ee) | `zoneee` | `ZONEEE_API_USER`, `ZONEEE_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/zoneee) |
|
||||||
| [Zonomi](https://zonomi.com) | `zonomi` | `ZONOMI_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/zonomi) |
|
| [Zonomi](https://zonomi.com) | `zonomi` | `ZONOMI_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/zonomi) |
|
||||||
|
@ -382,14 +388,6 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
||||||
|
|
||||||
Use custom DNS servers to resolve the FQDN authority.
|
Use custom DNS servers to resolve the FQDN authority.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
# ...
|
|
||||||
[certificatesResolvers.myresolver.acme.dnsChallenge]
|
|
||||||
# ...
|
|
||||||
resolvers = ["1.1.1.1:53", "8.8.8.8:53"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
myresolver:
|
myresolver:
|
||||||
|
@ -402,6 +400,14 @@ certificatesResolvers:
|
||||||
- "8.8.8.8:53"
|
- "8.8.8.8:53"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
# ...
|
||||||
|
[certificatesResolvers.myresolver.acme.dnsChallenge]
|
||||||
|
# ...
|
||||||
|
resolvers = ["1.1.1.1:53", "8.8.8.8:53"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# ...
|
# ...
|
||||||
--certificatesresolvers.myresolver.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53
|
--certificatesresolvers.myresolver.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53
|
||||||
|
@ -417,14 +423,6 @@ As described in [Let's Encrypt's post](https://community.letsencrypt.org/t/stagi
|
||||||
- `kid`: Key identifier from External CA
|
- `kid`: Key identifier from External CA
|
||||||
- `hmacEncoded`: HMAC key from External CA, should be in Base64 URL Encoding without padding format
|
- `hmacEncoded`: HMAC key from External CA, should be in Base64 URL Encoding without padding format
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
# ...
|
|
||||||
[certificatesResolvers.myresolver.acme.eab]
|
|
||||||
kid = "abc-keyID-xyz"
|
|
||||||
hmacEncoded = "abc-hmac-xyz"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
myresolver:
|
myresolver:
|
||||||
|
@ -435,6 +433,14 @@ certificatesResolvers:
|
||||||
hmacEncoded: abc-hmac-xyz
|
hmacEncoded: abc-hmac-xyz
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
# ...
|
||||||
|
[certificatesResolvers.myresolver.acme.eab]
|
||||||
|
kid = "abc-keyID-xyz"
|
||||||
|
hmacEncoded = "abc-hmac-xyz"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# ...
|
# ...
|
||||||
--certificatesresolvers.myresolver.acme.eab.kid=abc-keyID-xyz
|
--certificatesresolvers.myresolver.acme.eab.kid=abc-keyID-xyz
|
||||||
|
@ -454,13 +460,6 @@ The CA server to use:
|
||||||
|
|
||||||
??? example "Using the Let's Encrypt staging server"
|
??? example "Using the Let's Encrypt staging server"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
# ...
|
|
||||||
caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
myresolver:
|
myresolver:
|
||||||
|
@ -470,6 +469,13 @@ The CA server to use:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
# ...
|
||||||
|
caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# ...
|
# ...
|
||||||
--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
|
--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
|
||||||
|
@ -482,13 +488,6 @@ _Required, Default="acme.json"_
|
||||||
|
|
||||||
The `storage` option sets the location where your ACME certificates are saved to.
|
The `storage` option sets the location where your ACME certificates are saved to.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
# ...
|
|
||||||
storage = "acme.json"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
myresolver:
|
myresolver:
|
||||||
|
@ -498,6 +497,13 @@ certificatesResolvers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
# ...
|
||||||
|
storage = "acme.json"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# ...
|
# ...
|
||||||
--certificatesresolvers.myresolver.acme.storage=acme.json
|
--certificatesresolvers.myresolver.acme.storage=acme.json
|
||||||
|
@ -528,13 +534,6 @@ Preferred chain to use.
|
||||||
If the CA offers multiple certificate chains, prefer the chain with an issuer matching this Subject Common Name.
|
If the CA offers multiple certificate chains, prefer the chain with an issuer matching this Subject Common Name.
|
||||||
If no match, the default offered chain will be used.
|
If no match, the default offered chain will be used.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
# ...
|
|
||||||
preferredChain = "ISRG Root X1"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
myresolver:
|
myresolver:
|
||||||
|
@ -544,6 +543,13 @@ certificatesResolvers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
# ...
|
||||||
|
preferredChain = "ISRG Root X1"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# ...
|
# ...
|
||||||
--certificatesresolvers.myresolver.acme.preferredChain="ISRG Root X1"
|
--certificatesresolvers.myresolver.acme.preferredChain="ISRG Root X1"
|
||||||
|
@ -556,13 +562,6 @@ _Optional, Default="RSA4096"_
|
||||||
|
|
||||||
KeyType used for generating certificate private key. Allow value 'EC256', 'EC384', 'RSA2048', 'RSA4096', 'RSA8192'.
|
KeyType used for generating certificate private key. Allow value 'EC256', 'EC384', 'RSA2048', 'RSA4096', 'RSA8192'.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
# ...
|
|
||||||
keyType = "RSA4096"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
myresolver:
|
myresolver:
|
||||||
|
@ -572,6 +571,13 @@ certificatesResolvers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
# ...
|
||||||
|
keyType = "RSA4096"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# ...
|
# ...
|
||||||
--certificatesresolvers.myresolver.acme.keyType="RSA4096"
|
--certificatesresolvers.myresolver.acme.keyType="RSA4096"
|
||||||
|
|
|
@ -64,18 +64,6 @@ labels:
|
||||||
- traefik.http.routers.blog.tls.domains[0].sans=*.example.org
|
- traefik.http.routers.blog.tls.domains[0].sans=*.example.org
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.blog]
|
|
||||||
rule = "Host(`example.com`) && Path(`/blog`)"
|
|
||||||
[http.routers.blog.tls]
|
|
||||||
certResolver = "myresolver" # From static configuration
|
|
||||||
[[http.routers.blog.tls.domains]]
|
|
||||||
main = "example.org"
|
|
||||||
sans = ["*.example.org"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -89,3 +77,15 @@ http:
|
||||||
sans:
|
sans:
|
||||||
- "*.example.org"
|
- "*.example.org"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.blog]
|
||||||
|
rule = "Host(`example.com`) && Path(`/blog`)"
|
||||||
|
[http.routers.blog.tls]
|
||||||
|
certResolver = "myresolver" # From static configuration
|
||||||
|
[[http.routers.blog.tls.domains]]
|
||||||
|
main = "example.org"
|
||||||
|
sans = ["*.example.org"]
|
||||||
|
```
|
||||||
|
|
|
@ -52,15 +52,6 @@ labels:
|
||||||
- traefik.http.routers.blog.tls.certresolver=myresolver
|
- traefik.http.routers.blog.tls.certresolver=myresolver
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.blog]
|
|
||||||
rule = "(Host(`example.com`) && Path(`/blog`)) || Host(`blog.example.org`)"
|
|
||||||
[http.routers.blog.tls]
|
|
||||||
certResolver = "myresolver"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -70,3 +61,12 @@ http:
|
||||||
tls:
|
tls:
|
||||||
certResolver: myresolver
|
certResolver: myresolver
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.blog]
|
||||||
|
rule = "(Host(`example.com`) && Path(`/blog`)) || Host(`blog.example.org`)"
|
||||||
|
[http.routers.blog.tls]
|
||||||
|
certResolver = "myresolver"
|
||||||
|
```
|
||||||
|
|
|
@ -52,15 +52,6 @@ labels:
|
||||||
- traefik.http.routers.blog.tls.certresolver=myresolver
|
- traefik.http.routers.blog.tls.certresolver=myresolver
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.blog]
|
|
||||||
rule = "Host(`example.com`) && Path(`/blog`)"
|
|
||||||
[http.routers.blog.tls]
|
|
||||||
certResolver = "myresolver"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -70,3 +61,12 @@ http:
|
||||||
tls:
|
tls:
|
||||||
certResolver: myresolver
|
certResolver: myresolver
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.blog]
|
||||||
|
rule = "Host(`example.com`) && Path(`/blog`)"
|
||||||
|
[http.routers.blog.tls]
|
||||||
|
certResolver = "myresolver"
|
||||||
|
```
|
||||||
|
|
|
@ -13,6 +13,17 @@ See the [Let's Encrypt](./acme.md) page.
|
||||||
|
|
||||||
To add / remove TLS certificates, even when Traefik is already running, their definition can be added to the [dynamic configuration](../getting-started/configuration-overview.md), in the `[[tls.certificates]]` section:
|
To add / remove TLS certificates, even when Traefik is already running, their definition can be added to the [dynamic configuration](../getting-started/configuration-overview.md), in the `[[tls.certificates]]` section:
|
||||||
|
|
||||||
|
```yaml tab="File (YAML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
tls:
|
||||||
|
certificates:
|
||||||
|
- certFile: /path/to/domain.cert
|
||||||
|
keyFile: /path/to/domain.key
|
||||||
|
- certFile: /path/to/other-domain.cert
|
||||||
|
keyFile: /path/to/other-domain.key
|
||||||
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -25,17 +36,6 @@ To add / remove TLS certificates, even when Traefik is already running, their de
|
||||||
keyFile = "/path/to/other-domain.key"
|
keyFile = "/path/to/other-domain.key"
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
tls:
|
|
||||||
certificates:
|
|
||||||
- certFile: /path/to/domain.cert
|
|
||||||
keyFile: /path/to/domain.key
|
|
||||||
- certFile: /path/to/other-domain.cert
|
|
||||||
keyFile: /path/to/other-domain.key
|
|
||||||
```
|
|
||||||
|
|
||||||
!!! important "Restriction"
|
!!! important "Restriction"
|
||||||
|
|
||||||
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.
|
||||||
|
@ -46,13 +46,6 @@ tls:
|
||||||
|
|
||||||
In Traefik, certificates are grouped together in certificates stores, which are defined as such:
|
In Traefik, certificates are grouped together in certificates stores, which are defined as such:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
[tls.stores]
|
|
||||||
[tls.stores.default]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -61,6 +54,13 @@ tls:
|
||||||
default: {}
|
default: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
[tls.stores]
|
||||||
|
[tls.stores.default]
|
||||||
|
```
|
||||||
|
|
||||||
!!! important "Restriction"
|
!!! important "Restriction"
|
||||||
|
|
||||||
Any store definition other than the default one (named `default`) will be ignored,
|
Any store definition other than the default one (named `default`) will be ignored,
|
||||||
|
@ -68,21 +68,6 @@ tls:
|
||||||
|
|
||||||
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:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
[[tls.certificates]]
|
|
||||||
certFile = "/path/to/domain.cert"
|
|
||||||
keyFile = "/path/to/domain.key"
|
|
||||||
stores = ["default"]
|
|
||||||
|
|
||||||
[[tls.certificates]]
|
|
||||||
# Note that since no store is defined,
|
|
||||||
# the certificate below will be stored in the `default` store.
|
|
||||||
certFile = "/path/to/other-domain.cert"
|
|
||||||
keyFile = "/path/to/other-domain.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -98,6 +83,21 @@ tls:
|
||||||
keyFile: /path/to/other-domain.key
|
keyFile: /path/to/other-domain.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
[[tls.certificates]]
|
||||||
|
certFile = "/path/to/domain.cert"
|
||||||
|
keyFile = "/path/to/domain.key"
|
||||||
|
stores = ["default"]
|
||||||
|
|
||||||
|
[[tls.certificates]]
|
||||||
|
# Note that since no store is defined,
|
||||||
|
# the certificate below will be stored in the `default` store.
|
||||||
|
certFile = "/path/to/other-domain.cert"
|
||||||
|
keyFile = "/path/to/other-domain.key"
|
||||||
|
```
|
||||||
|
|
||||||
!!! important "Restriction"
|
!!! important "Restriction"
|
||||||
|
|
||||||
The `stores` list will actually be ignored and automatically set to `["default"]`.
|
The `stores` list will actually be ignored and automatically set to `["default"]`.
|
||||||
|
@ -107,16 +107,6 @@ tls:
|
||||||
Traefik can use a default certificate for connections without a SNI, or without a matching domain.
|
Traefik can use a default certificate for connections without a SNI, or without a matching domain.
|
||||||
This default certificate should be defined in a TLS store:
|
This default certificate should be defined in a TLS store:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
[tls.stores]
|
|
||||||
[tls.stores.default]
|
|
||||||
[tls.stores.default.defaultCertificate]
|
|
||||||
certFile = "path/to/cert.crt"
|
|
||||||
keyFile = "path/to/cert.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -128,6 +118,16 @@ tls:
|
||||||
keyFile: path/to/cert.key
|
keyFile: path/to/cert.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
[tls.stores]
|
||||||
|
[tls.stores.default]
|
||||||
|
[tls.stores.default.defaultCertificate]
|
||||||
|
certFile = "path/to/cert.crt"
|
||||||
|
keyFile = "path/to/cert.key"
|
||||||
|
```
|
||||||
|
|
||||||
If no default certificate is provided, Traefik generates and uses a self-signed certificate.
|
If no default certificate is provided, Traefik generates and uses a self-signed certificate.
|
||||||
|
|
||||||
## TLS Options
|
## TLS Options
|
||||||
|
@ -155,18 +155,6 @@ The TLS options allow one to configure some parameters of the TLS connection.
|
||||||
|
|
||||||
### Minimum TLS Version
|
### Minimum TLS Version
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
[tls.options]
|
|
||||||
|
|
||||||
[tls.options.default]
|
|
||||||
minVersion = "VersionTLS12"
|
|
||||||
|
|
||||||
[tls.options.mintls13]
|
|
||||||
minVersion = "VersionTLS13"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -179,6 +167,18 @@ tls:
|
||||||
minVersion: VersionTLS13
|
minVersion: VersionTLS13
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
[tls.options]
|
||||||
|
|
||||||
|
[tls.options.default]
|
||||||
|
minVersion = "VersionTLS12"
|
||||||
|
|
||||||
|
[tls.options.mintls13]
|
||||||
|
minVersion = "VersionTLS13"
|
||||||
|
```
|
||||||
|
|
||||||
```yaml tab="Kubernetes"
|
```yaml tab="Kubernetes"
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
kind: TLSOption
|
kind: TLSOption
|
||||||
|
@ -206,18 +206,6 @@ We discourage the use of this setting to disable TLS1.3.
|
||||||
|
|
||||||
The recommended approach is to update the clients to support TLS1.3.
|
The recommended approach is to update the clients to support TLS1.3.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
[tls.options]
|
|
||||||
|
|
||||||
[tls.options.default]
|
|
||||||
maxVersion = "VersionTLS13"
|
|
||||||
|
|
||||||
[tls.options.maxtls12]
|
|
||||||
maxVersion = "VersionTLS12"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -230,6 +218,18 @@ tls:
|
||||||
maxVersion: VersionTLS12
|
maxVersion: VersionTLS12
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
[tls.options]
|
||||||
|
|
||||||
|
[tls.options.default]
|
||||||
|
maxVersion = "VersionTLS13"
|
||||||
|
|
||||||
|
[tls.options.maxtls12]
|
||||||
|
maxVersion = "VersionTLS12"
|
||||||
|
```
|
||||||
|
|
||||||
```yaml tab="Kubernetes"
|
```yaml tab="Kubernetes"
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
kind: TLSOption
|
kind: TLSOption
|
||||||
|
@ -255,16 +255,6 @@ spec:
|
||||||
|
|
||||||
See [cipherSuites](https://godoc.org/crypto/tls#pkg-constants) for more information.
|
See [cipherSuites](https://godoc.org/crypto/tls#pkg-constants) for more information.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
[tls.options]
|
|
||||||
[tls.options.default]
|
|
||||||
cipherSuites = [
|
|
||||||
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -275,6 +265,16 @@ tls:
|
||||||
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
[tls.options]
|
||||||
|
[tls.options.default]
|
||||||
|
cipherSuites = [
|
||||||
|
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
```yaml tab="Kubernetes"
|
```yaml tab="Kubernetes"
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
kind: TLSOption
|
kind: TLSOption
|
||||||
|
@ -301,14 +301,6 @@ The names of the curves defined by [`crypto`](https://godoc.org/crypto/tls#Curve
|
||||||
|
|
||||||
See [CurveID](https://godoc.org/crypto/tls#CurveID) for more information.
|
See [CurveID](https://godoc.org/crypto/tls#CurveID) for more information.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
[tls.options]
|
|
||||||
[tls.options.default]
|
|
||||||
curvePreferences = ["CurveP521", "CurveP384"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -320,6 +312,14 @@ tls:
|
||||||
- CurveP384
|
- CurveP384
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
[tls.options]
|
||||||
|
[tls.options.default]
|
||||||
|
curvePreferences = ["CurveP521", "CurveP384"]
|
||||||
|
```
|
||||||
|
|
||||||
```yaml tab="Kubernetes"
|
```yaml tab="Kubernetes"
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
kind: TLSOption
|
kind: TLSOption
|
||||||
|
@ -338,14 +338,6 @@ spec:
|
||||||
With strict SNI checking enabled, Traefik won't allow connections from clients
|
With strict SNI checking enabled, Traefik won't allow connections from clients
|
||||||
that do not specify a server_name extension or don't match any certificate configured on the tlsOption.
|
that do not specify a server_name extension or don't match any certificate configured on the tlsOption.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
[tls.options]
|
|
||||||
[tls.options.default]
|
|
||||||
sniStrict = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -355,6 +347,14 @@ tls:
|
||||||
sniStrict: true
|
sniStrict: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
[tls.options]
|
||||||
|
[tls.options.default]
|
||||||
|
sniStrict = true
|
||||||
|
```
|
||||||
|
|
||||||
```yaml tab="Kubernetes"
|
```yaml tab="Kubernetes"
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
kind: TLSOption
|
kind: TLSOption
|
||||||
|
@ -371,14 +371,6 @@ spec:
|
||||||
This option allows the server to choose its most preferred cipher suite instead of the client's.
|
This option allows the server to choose its most preferred cipher suite instead of the client's.
|
||||||
Please note that this is enabled automatically when `minVersion` or `maxVersion` are set.
|
Please note that this is enabled automatically when `minVersion` or `maxVersion` are set.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
[tls.options]
|
|
||||||
[tls.options.default]
|
|
||||||
preferServerCipherSuites = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -388,6 +380,14 @@ tls:
|
||||||
preferServerCipherSuites: true
|
preferServerCipherSuites: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
[tls.options]
|
||||||
|
[tls.options.default]
|
||||||
|
preferServerCipherSuites = true
|
||||||
|
```
|
||||||
|
|
||||||
```yaml tab="Kubernetes"
|
```yaml tab="Kubernetes"
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
kind: TLSOption
|
kind: TLSOption
|
||||||
|
@ -413,17 +413,6 @@ The `clientAuth.clientAuthType` option governs the behaviour as follows:
|
||||||
- `VerifyClientCertIfGiven`: if a certificate is provided, verifies if it is signed by a CA listed in `clientAuth.caFiles`. Otherwise proceeds without any certificate.
|
- `VerifyClientCertIfGiven`: if a certificate is provided, verifies if it is signed by a CA listed in `clientAuth.caFiles`. Otherwise proceeds without any certificate.
|
||||||
- `RequireAndVerifyClientCert`: requires a certificate, which must be signed by a CA listed in `clientAuth.caFiles`.
|
- `RequireAndVerifyClientCert`: requires a certificate, which must be signed by a CA listed in `clientAuth.caFiles`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic configuration
|
|
||||||
|
|
||||||
[tls.options]
|
|
||||||
[tls.options.default]
|
|
||||||
[tls.options.default.clientAuth]
|
|
||||||
# in PEM format. each file can contain multiple CAs.
|
|
||||||
caFiles = ["tests/clientca1.crt", "tests/clientca2.crt"]
|
|
||||||
clientAuthType = "RequireAndVerifyClientCert"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic configuration
|
# Dynamic configuration
|
||||||
|
|
||||||
|
@ -438,6 +427,17 @@ tls:
|
||||||
clientAuthType: RequireAndVerifyClientCert
|
clientAuthType: RequireAndVerifyClientCert
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic configuration
|
||||||
|
|
||||||
|
[tls.options]
|
||||||
|
[tls.options.default]
|
||||||
|
[tls.options.default.clientAuth]
|
||||||
|
# in PEM format. each file can contain multiple CAs.
|
||||||
|
caFiles = ["tests/clientca1.crt", "tests/clientca2.crt"]
|
||||||
|
clientAuthType = "RequireAndVerifyClientCert"
|
||||||
|
```
|
||||||
|
|
||||||
```yaml tab="Kubernetes"
|
```yaml tab="Kubernetes"
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
kind: TLSOption
|
kind: TLSOption
|
||||||
|
|
|
@ -43,13 +43,6 @@ labels:
|
||||||
- "traefik.http.middlewares.add-foo.addprefix.prefix=/foo"
|
- "traefik.http.middlewares.add-foo.addprefix.prefix=/foo"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Prefixing with /foo
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.add-foo.addPrefix]
|
|
||||||
prefix = "/foo"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Prefixing with /foo
|
# Prefixing with /foo
|
||||||
http:
|
http:
|
||||||
|
@ -59,6 +52,13 @@ http:
|
||||||
prefix: "/foo"
|
prefix: "/foo"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Prefixing with /foo
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.add-foo.addPrefix]
|
||||||
|
prefix = "/foo"
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### `prefix`
|
### `prefix`
|
||||||
|
|
|
@ -48,16 +48,6 @@ 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)"
|
|
||||||
# Declaring the user list
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.basicAuth]
|
|
||||||
users = [
|
|
||||||
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
|
||||||
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Declaring the user list
|
# Declaring the user list
|
||||||
http:
|
http:
|
||||||
|
@ -69,6 +59,16 @@ http:
|
||||||
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
|
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Declaring the user list
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.basicAuth]
|
||||||
|
users = [
|
||||||
|
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
||||||
|
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### General
|
### General
|
||||||
|
@ -142,16 +142,6 @@ 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)"
|
|
||||||
# Declaring the user list
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.basicAuth]
|
|
||||||
users = [
|
|
||||||
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
|
||||||
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Declaring the user list
|
# Declaring the user list
|
||||||
http:
|
http:
|
||||||
|
@ -163,6 +153,16 @@ http:
|
||||||
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
|
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Declaring the user list
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.basicAuth]
|
||||||
|
users = [
|
||||||
|
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
||||||
|
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
### `usersFile`
|
### `usersFile`
|
||||||
|
|
||||||
The `usersFile` option is the path to an external file that contains the authorized users for the middleware.
|
The `usersFile` option is the path to an external file that contains the authorized users for the middleware.
|
||||||
|
@ -216,12 +216,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.basicauth.usersfile=/path/to/my/usersfile"
|
- "traefik.http.middlewares.test-auth.basicauth.usersfile=/path/to/my/usersfile"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.basicAuth]
|
|
||||||
usersFile = "/path/to/my/usersfile"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -230,6 +224,12 @@ http:
|
||||||
usersFile: "/path/to/my/usersfile"
|
usersFile: "/path/to/my/usersfile"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.basicAuth]
|
||||||
|
usersFile = "/path/to/my/usersfile"
|
||||||
|
```
|
||||||
|
|
||||||
??? example "A file containing test/test and test2/test2"
|
??? example "A file containing test/test and test2/test2"
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
|
@ -271,12 +271,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.basicauth.realm=MyRealm"
|
- "traefik.http.middlewares.test-auth.basicauth.realm=MyRealm"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.basicAuth]
|
|
||||||
realm = "MyRealm"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -285,6 +279,12 @@ http:
|
||||||
realm: "MyRealm"
|
realm: "MyRealm"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.basicAuth]
|
||||||
|
realm = "MyRealm"
|
||||||
|
```
|
||||||
|
|
||||||
### `headerField`
|
### `headerField`
|
||||||
|
|
||||||
You can define a header field to store the authenticated user using the `headerField`option.
|
You can define a header field to store the authenticated user using the `headerField`option.
|
||||||
|
@ -315,12 +315,6 @@ spec:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares.my-auth.basicAuth]
|
|
||||||
# ...
|
|
||||||
headerField = "X-WebAuth-User"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -330,6 +324,12 @@ http:
|
||||||
headerField: "X-WebAuth-User"
|
headerField: "X-WebAuth-User"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[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`.)
|
||||||
|
@ -364,12 +364,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.basicauth.removeheader=true"
|
- "traefik.http.middlewares.test-auth.basicauth.removeheader=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.basicAuth]
|
|
||||||
removeHeader = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -377,3 +371,9 @@ http:
|
||||||
basicAuth:
|
basicAuth:
|
||||||
removeHeader: true
|
removeHeader: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.basicAuth]
|
||||||
|
removeHeader = true
|
||||||
|
```
|
||||||
|
|
|
@ -47,13 +47,6 @@ labels:
|
||||||
- "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=2000000"
|
- "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=2000000"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Sets the maximum request body to 2MB
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.limit.buffering]
|
|
||||||
maxRequestBodyBytes = 2000000
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Sets the maximum request body to 2MB
|
# Sets the maximum request body to 2MB
|
||||||
http:
|
http:
|
||||||
|
@ -63,6 +56,13 @@ http:
|
||||||
maxRequestBodyBytes: 2000000
|
maxRequestBodyBytes: 2000000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Sets the maximum request body to 2MB
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.limit.buffering]
|
||||||
|
maxRequestBodyBytes = 2000000
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### `maxRequestBodyBytes`
|
### `maxRequestBodyBytes`
|
||||||
|
@ -101,12 +101,6 @@ labels:
|
||||||
- "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=2000000"
|
- "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=2000000"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.limit.buffering]
|
|
||||||
maxRequestBodyBytes = 2000000
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -115,6 +109,12 @@ http:
|
||||||
maxRequestBodyBytes: 2000000
|
maxRequestBodyBytes: 2000000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.limit.buffering]
|
||||||
|
maxRequestBodyBytes = 2000000
|
||||||
|
```
|
||||||
|
|
||||||
### `memRequestBodyBytes`
|
### `memRequestBodyBytes`
|
||||||
|
|
||||||
You can configure a threshold (in bytes) from which the request will be buffered on disk instead of in memory with the `memRequestBodyBytes` option.
|
You can configure a threshold (in bytes) from which the request will be buffered on disk instead of in memory with the `memRequestBodyBytes` option.
|
||||||
|
@ -149,12 +149,6 @@ labels:
|
||||||
- "traefik.http.middlewares.limit.buffering.memRequestBodyBytes=2000000"
|
- "traefik.http.middlewares.limit.buffering.memRequestBodyBytes=2000000"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.limit.buffering]
|
|
||||||
memRequestBodyBytes = 2000000
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -163,6 +157,12 @@ http:
|
||||||
memRequestBodyBytes: 2000000
|
memRequestBodyBytes: 2000000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.limit.buffering]
|
||||||
|
memRequestBodyBytes = 2000000
|
||||||
|
```
|
||||||
|
|
||||||
### `maxResponseBodyBytes`
|
### `maxResponseBodyBytes`
|
||||||
|
|
||||||
The `maxResponseBodyBytes` option configures the maximum allowed response size from the service (in bytes).
|
The `maxResponseBodyBytes` option configures the maximum allowed response size from the service (in bytes).
|
||||||
|
@ -199,12 +199,6 @@ labels:
|
||||||
- "traefik.http.middlewares.limit.buffering.maxResponseBodyBytes=2000000"
|
- "traefik.http.middlewares.limit.buffering.maxResponseBodyBytes=2000000"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.limit.buffering]
|
|
||||||
maxResponseBodyBytes = 2000000
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -213,6 +207,12 @@ http:
|
||||||
maxResponseBodyBytes: 2000000
|
maxResponseBodyBytes: 2000000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.limit.buffering]
|
||||||
|
maxResponseBodyBytes = 2000000
|
||||||
|
```
|
||||||
|
|
||||||
### `memResponseBodyBytes`
|
### `memResponseBodyBytes`
|
||||||
|
|
||||||
You can configure a threshold (in bytes) from which the response will be buffered on disk instead of in memory with the `memResponseBodyBytes` option.
|
You can configure a threshold (in bytes) from which the response will be buffered on disk instead of in memory with the `memResponseBodyBytes` option.
|
||||||
|
@ -247,12 +247,6 @@ labels:
|
||||||
- "traefik.http.middlewares.limit.buffering.memResponseBodyBytes=2000000"
|
- "traefik.http.middlewares.limit.buffering.memResponseBodyBytes=2000000"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.limit.buffering]
|
|
||||||
memResponseBodyBytes = 2000000
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -261,6 +255,12 @@ http:
|
||||||
memResponseBodyBytes: 2000000
|
memResponseBodyBytes: 2000000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.limit.buffering]
|
||||||
|
memResponseBodyBytes = 2000000
|
||||||
|
```
|
||||||
|
|
||||||
### `retryExpression`
|
### `retryExpression`
|
||||||
|
|
||||||
You can have the Buffering middleware replay the request using `retryExpression`.
|
You can have the Buffering middleware replay the request using `retryExpression`.
|
||||||
|
@ -297,12 +297,6 @@ You can have the Buffering middleware replay the request using `retryExpression`
|
||||||
- "traefik.http.middlewares.limit.buffering.retryExpression=IsNetworkError() && Attempts() < 2"
|
- "traefik.http.middlewares.limit.buffering.retryExpression=IsNetworkError() && Attempts() < 2"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.limit.buffering]
|
|
||||||
retryExpression = "IsNetworkError() && Attempts() < 2"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -311,6 +305,12 @@ You can have the Buffering middleware replay the request using `retryExpression`
|
||||||
retryExpression: "IsNetworkError() && Attempts() < 2"
|
retryExpression: "IsNetworkError() && Attempts() < 2"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.limit.buffering]
|
||||||
|
retryExpression = "IsNetworkError() && Attempts() < 2"
|
||||||
|
```
|
||||||
|
|
||||||
The retry expression is defined as a logical combination of the functions below with the operators AND (`&&`) and OR (`||`). At least one function is required:
|
The retry expression is defined as a logical combination of the functions below with the operators AND (`&&`) and OR (`||`). At least one function is required:
|
||||||
|
|
||||||
- `Attempts()` number of attempts (the first one counts)
|
- `Attempts()` number of attempts (the first one counts)
|
||||||
|
|
|
@ -117,34 +117,6 @@ labels:
|
||||||
- "traefik.http.services.service1.loadbalancer.server.port=80"
|
- "traefik.http.services.service1.loadbalancer.server.port=80"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# ...
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.router1]
|
|
||||||
service = "service1"
|
|
||||||
middlewares = ["secured"]
|
|
||||||
rule = "Host(`mydomain`)"
|
|
||||||
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.secured.chain]
|
|
||||||
middlewares = ["https-only", "known-ips", "auth-users"]
|
|
||||||
|
|
||||||
[http.middlewares.auth-users.basicAuth]
|
|
||||||
users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"]
|
|
||||||
|
|
||||||
[http.middlewares.https-only.redirectScheme]
|
|
||||||
scheme = "https"
|
|
||||||
|
|
||||||
[http.middlewares.known-ips.ipWhiteList]
|
|
||||||
sourceRange = ["192.168.1.7", "127.0.0.1/32"]
|
|
||||||
|
|
||||||
[http.services]
|
|
||||||
[http.services.service1]
|
|
||||||
[http.services.service1.loadBalancer]
|
|
||||||
[[http.services.service1.loadBalancer.servers]]
|
|
||||||
url = "http://127.0.0.1:80"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# ...
|
# ...
|
||||||
http:
|
http:
|
||||||
|
@ -184,3 +156,31 @@ http:
|
||||||
servers:
|
servers:
|
||||||
- url: "http://127.0.0.1:80"
|
- url: "http://127.0.0.1:80"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# ...
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.router1]
|
||||||
|
service = "service1"
|
||||||
|
middlewares = ["secured"]
|
||||||
|
rule = "Host(`mydomain`)"
|
||||||
|
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.secured.chain]
|
||||||
|
middlewares = ["https-only", "known-ips", "auth-users"]
|
||||||
|
|
||||||
|
[http.middlewares.auth-users.basicAuth]
|
||||||
|
users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"]
|
||||||
|
|
||||||
|
[http.middlewares.https-only.redirectScheme]
|
||||||
|
scheme = "https"
|
||||||
|
|
||||||
|
[http.middlewares.known-ips.ipWhiteList]
|
||||||
|
sourceRange = ["192.168.1.7", "127.0.0.1/32"]
|
||||||
|
|
||||||
|
[http.services]
|
||||||
|
[http.services.service1]
|
||||||
|
[http.services.service1.loadBalancer]
|
||||||
|
[[http.services.service1.loadBalancer.servers]]
|
||||||
|
url = "http://127.0.0.1:80"
|
||||||
|
```
|
||||||
|
|
|
@ -59,13 +59,6 @@ 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)"
|
|
||||||
# Latency Check
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.latency-check.circuitBreaker]
|
|
||||||
expression = "LatencyAtQuantileMS(50.0) > 100"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Latency Check
|
# Latency Check
|
||||||
http:
|
http:
|
||||||
|
@ -75,6 +68,13 @@ http:
|
||||||
expression: "LatencyAtQuantileMS(50.0) > 100"
|
expression: "LatencyAtQuantileMS(50.0) > 100"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Latency Check
|
||||||
|
[http.middlewares]
|
||||||
|
[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:
|
||||||
|
|
|
@ -42,12 +42,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-compress.compress=true"
|
- "traefik.http.middlewares.test-compress.compress=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Enable gzip compression
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-compress.compress]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Enable gzip compression
|
# Enable gzip compression
|
||||||
http:
|
http:
|
||||||
|
@ -56,6 +50,12 @@ http:
|
||||||
compress: {}
|
compress: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Enable gzip compression
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-compress.compress]
|
||||||
|
```
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
|
|
||||||
Responses are compressed when the following criteria are all met:
|
Responses are compressed when the following criteria are all met:
|
||||||
|
@ -108,12 +108,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-compress.compress.excludedcontenttypes=text/event-stream"
|
- "traefik.http.middlewares.test-compress.compress.excludedcontenttypes=text/event-stream"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-compress.compress]
|
|
||||||
excludedContentTypes = ["text/event-stream"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -122,3 +116,9 @@ http:
|
||||||
excludedContentTypes:
|
excludedContentTypes:
|
||||||
- text/event-stream
|
- text/event-stream
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-compress.compress]
|
||||||
|
excludedContentTypes = ["text/event-stream"]
|
||||||
|
```
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
# ContentType
|
# ContentType
|
||||||
|
|
||||||
Handling Content-Type auto-detection
|
Handling Content-Type auto-detection
|
||||||
|
@ -62,13 +61,6 @@ labels:
|
||||||
- "traefik.http.middlewares.autodetect.contenttype.autodetect=false"
|
- "traefik.http.middlewares.autodetect.contenttype.autodetect=false"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Disable auto-detection
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.autodetect.contentType]
|
|
||||||
autoDetect=false
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Disable auto-detection
|
# Disable auto-detection
|
||||||
http:
|
http:
|
||||||
|
@ -78,6 +70,13 @@ http:
|
||||||
autoDetect: false
|
autoDetect: false
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Disable auto-detection
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.autodetect.contentType]
|
||||||
|
autoDetect=false
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### `autoDetect`
|
### `autoDetect`
|
||||||
|
|
|
@ -43,16 +43,6 @@ 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)"
|
|
||||||
# Declaring the user list
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.digestAuth]
|
|
||||||
users = [
|
|
||||||
"test:traefik:a2688e031edb4be6a3797f3882655c05",
|
|
||||||
"test2:traefik:518845800f9e2bfb1f1f740ec24f074e",
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Declaring the user list
|
# Declaring the user list
|
||||||
http:
|
http:
|
||||||
|
@ -64,6 +54,16 @@ http:
|
||||||
- "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"
|
- "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Declaring the user list
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.digestAuth]
|
||||||
|
users = [
|
||||||
|
"test:traefik:a2688e031edb4be6a3797f3882655c05",
|
||||||
|
"test2:traefik:518845800f9e2bfb1f1f740ec24f074e",
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
!!! tip
|
!!! tip
|
||||||
|
@ -120,15 +120,6 @@ 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)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.digestAuth]
|
|
||||||
users = [
|
|
||||||
"test:traefik:a2688e031edb4be6a3797f3882655c05",
|
|
||||||
"test2:traefik:518845800f9e2bfb1f1f740ec24f074e",
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -139,6 +130,15 @@ http:
|
||||||
- "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"
|
- "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.digestAuth]
|
||||||
|
users = [
|
||||||
|
"test:traefik:a2688e031edb4be6a3797f3882655c05",
|
||||||
|
"test2:traefik:518845800f9e2bfb1f1f740ec24f074e",
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
### `usersFile`
|
### `usersFile`
|
||||||
|
|
||||||
The `usersFile` option is the path to an external file that contains the authorized users for the middleware.
|
The `usersFile` option is the path to an external file that contains the authorized users for the middleware.
|
||||||
|
@ -192,12 +192,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.digestauth.usersfile=/path/to/my/usersfile"
|
- "traefik.http.middlewares.test-auth.digestauth.usersfile=/path/to/my/usersfile"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.digestAuth]
|
|
||||||
usersFile = "/path/to/my/usersfile"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -206,6 +200,12 @@ http:
|
||||||
usersFile: "/path/to/my/usersfile"
|
usersFile: "/path/to/my/usersfile"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.digestAuth]
|
||||||
|
usersFile = "/path/to/my/usersfile"
|
||||||
|
```
|
||||||
|
|
||||||
??? example "A file containing test/test and test2/test2"
|
??? example "A file containing test/test and test2/test2"
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
|
@ -247,12 +247,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.digestauth.realm=MyRealm"
|
- "traefik.http.middlewares.test-auth.digestauth.realm=MyRealm"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.digestAuth]
|
|
||||||
realm = "MyRealm"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -261,6 +255,12 @@ http:
|
||||||
realm: "MyRealm"
|
realm: "MyRealm"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.digestAuth]
|
||||||
|
realm = "MyRealm"
|
||||||
|
```
|
||||||
|
|
||||||
### `headerField`
|
### `headerField`
|
||||||
|
|
||||||
You can customize the header field for the authenticated user using the `headerField`option.
|
You can customize the header field for the authenticated user using the `headerField`option.
|
||||||
|
@ -296,12 +296,6 @@ labels:
|
||||||
- "traefik.http.middlewares.my-auth.digestauth.headerField=X-WebAuth-User"
|
- "traefik.http.middlewares.my-auth.digestauth.headerField=X-WebAuth-User"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares.my-auth.digestAuth]
|
|
||||||
# ...
|
|
||||||
headerField = "X-WebAuth-User"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -311,6 +305,12 @@ http:
|
||||||
headerField: "X-WebAuth-User"
|
headerField: "X-WebAuth-User"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[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`.)
|
||||||
|
@ -345,12 +345,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.digestauth.removeheader=true"
|
- "traefik.http.middlewares.test-auth.digestauth.removeheader=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.digestAuth]
|
|
||||||
removeHeader = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -358,3 +352,9 @@ http:
|
||||||
digestAuth:
|
digestAuth:
|
||||||
removeHeader: true
|
removeHeader: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.digestAuth]
|
||||||
|
removeHeader = true
|
||||||
|
```
|
||||||
|
|
|
@ -58,18 +58,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-errorpage.errors.query=/{status}.html"
|
- "traefik.http.middlewares.test-errorpage.errors.query=/{status}.html"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Custom Error Page for 5XX
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-errorpage.errors]
|
|
||||||
status = ["500-599"]
|
|
||||||
service = "serviceError"
|
|
||||||
query = "/{status}.html"
|
|
||||||
|
|
||||||
[http.services]
|
|
||||||
# ... definition of error-handler-service and my-service
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Custom Error Page for 5XX
|
# Custom Error Page for 5XX
|
||||||
http:
|
http:
|
||||||
|
@ -81,6 +69,18 @@ http:
|
||||||
service: serviceError
|
service: serviceError
|
||||||
query: "/{status}.html"
|
query: "/{status}.html"
|
||||||
|
|
||||||
|
services:
|
||||||
|
# ... definition of error-handler-service and my-service
|
||||||
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Custom Error Page for 5XX
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-errorpage.errors]
|
||||||
|
status = ["500-599"]
|
||||||
|
service = "serviceError"
|
||||||
|
query = "/{status}.html"
|
||||||
|
|
||||||
[http.services]
|
[http.services]
|
||||||
# ... definition of error-handler-service and my-service
|
# ... definition of error-handler-service and my-service
|
||||||
```
|
```
|
||||||
|
@ -99,7 +99,10 @@ The status code ranges are inclusive (`500-599` will trigger with every code bet
|
||||||
|
|
||||||
!!! note ""
|
!!! note ""
|
||||||
|
|
||||||
You can define either a status code as a number (`500`) or ranges by separating two codes with a dash (`500-599`).
|
You can define either a status code as a number (`500`),
|
||||||
|
as multiple comma-separated numbers (`500,502`),
|
||||||
|
as ranges by separating two codes with a dash (`500-599`),
|
||||||
|
or a combination of the two (`404,418,500-599`).
|
||||||
|
|
||||||
### `service`
|
### `service`
|
||||||
|
|
||||||
|
|
|
@ -45,13 +45,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.address=https://example.com/auth"
|
- "traefik.http.middlewares.test-auth.forwardauth.address=https://example.com/auth"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Forward authentication to example.com
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Forward authentication to example.com
|
# Forward authentication to example.com
|
||||||
http:
|
http:
|
||||||
|
@ -61,6 +54,13 @@ http:
|
||||||
address: "https://example.com/auth"
|
address: "https://example.com/auth"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Forward authentication to example.com
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
```
|
||||||
|
|
||||||
## Forward-Request Headers
|
## Forward-Request Headers
|
||||||
|
|
||||||
The following request properties are provided to the forward-auth target endpoint as `X-Forwarded-` headers.
|
The following request properties are provided to the forward-auth target endpoint as `X-Forwarded-` headers.
|
||||||
|
@ -109,12 +109,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.address=https://example.com/auth"
|
- "traefik.http.middlewares.test-auth.forwardauth.address=https://example.com/auth"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -123,6 +117,12 @@ http:
|
||||||
address: "https://example.com/auth"
|
address: "https://example.com/auth"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
```
|
||||||
|
|
||||||
### `trustForwardHeader`
|
### `trustForwardHeader`
|
||||||
|
|
||||||
Set the `trustForwardHeader` option to `true` to trust all `X-Forwarded-*` headers.
|
Set the `trustForwardHeader` option to `true` to trust all `X-Forwarded-*` headers.
|
||||||
|
@ -158,13 +158,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.trustForwardHeader=true"
|
- "traefik.http.middlewares.test-auth.forwardauth.trustForwardHeader=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
trustForwardHeader = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -174,6 +167,13 @@ http:
|
||||||
trustForwardHeader: true
|
trustForwardHeader: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
trustForwardHeader = true
|
||||||
|
```
|
||||||
|
|
||||||
### `authResponseHeaders`
|
### `authResponseHeaders`
|
||||||
|
|
||||||
The `authResponseHeaders` option is the list of headers to copy from the authentication server response and set on
|
The `authResponseHeaders` option is the list of headers to copy from the authentication server response and set on
|
||||||
|
@ -212,13 +212,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.authResponseHeaders=X-Auth-User, X-Secret"
|
- "traefik.http.middlewares.test-auth.forwardauth.authResponseHeaders=X-Auth-User, X-Secret"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
authResponseHeaders = ["X-Auth-User", "X-Secret"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -230,6 +223,13 @@ http:
|
||||||
- "X-Secret"
|
- "X-Secret"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
authResponseHeaders = ["X-Auth-User", "X-Secret"]
|
||||||
|
```
|
||||||
|
|
||||||
### `authResponseHeadersRegex`
|
### `authResponseHeadersRegex`
|
||||||
|
|
||||||
The `authResponseHeadersRegex` option is the regex to match headers to copy from the authentication server response and
|
The `authResponseHeadersRegex` option is the regex to match headers to copy from the authentication server response and
|
||||||
|
@ -268,13 +268,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.authResponseHeadersRegex=^X-"
|
- "traefik.http.middlewares.test-auth.forwardauth.authResponseHeadersRegex=^X-"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
authResponseHeadersRegex = "^X-"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -284,6 +277,13 @@ http:
|
||||||
authResponseHeadersRegex: "^X-"
|
authResponseHeadersRegex: "^X-"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
authResponseHeadersRegex = "^X-"
|
||||||
|
```
|
||||||
|
|
||||||
### `authRequestHeaders`
|
### `authRequestHeaders`
|
||||||
|
|
||||||
The `authRequestHeaders` option is the list of the headers to copy from the request to the authentication server.
|
The `authRequestHeaders` option is the list of the headers to copy from the request to the authentication server.
|
||||||
|
@ -323,13 +323,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.authRequestHeaders=Accept,X-CustomHeader"
|
- "traefik.http.middlewares.test-auth.forwardauth.authRequestHeaders=Accept,X-CustomHeader"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
authRequestHeaders = "Accept,X-CustomHeader"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -341,6 +334,13 @@ http:
|
||||||
- "X-CustomHeader"
|
- "X-CustomHeader"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
authRequestHeaders = "Accept,X-CustomHeader"
|
||||||
|
```
|
||||||
|
|
||||||
### `tls`
|
### `tls`
|
||||||
|
|
||||||
The `tls` option is the TLS configuration from Traefik to the authentication server.
|
The `tls` option is the TLS configuration from Traefik to the authentication server.
|
||||||
|
@ -392,14 +392,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.tls.ca=path/to/local.crt"
|
- "traefik.http.middlewares.test-auth.forwardauth.tls.ca=path/to/local.crt"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
[http.middlewares.test-auth.forwardAuth.tls]
|
|
||||||
ca = "path/to/local.crt"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -410,6 +402,14 @@ http:
|
||||||
ca: "path/to/local.crt"
|
ca: "path/to/local.crt"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
[http.middlewares.test-auth.forwardAuth.tls]
|
||||||
|
ca = "path/to/local.crt"
|
||||||
|
```
|
||||||
|
|
||||||
#### `tls.caOptional`
|
#### `tls.caOptional`
|
||||||
|
|
||||||
The value of `tls.caOptional` defines which policy should be used for the secure connection with TLS Client Authentication to the authentication server.
|
The value of `tls.caOptional` defines which policy should be used for the secure connection with TLS Client Authentication to the authentication server.
|
||||||
|
@ -454,14 +454,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.tls.caOptional=true"
|
- "traefik.http.middlewares.test-auth.forwardauth.tls.caOptional=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
[http.middlewares.test-auth.forwardAuth.tls]
|
|
||||||
caOptional = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -472,6 +464,14 @@ http:
|
||||||
caOptional: true
|
caOptional: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
[http.middlewares.test-auth.forwardAuth.tls]
|
||||||
|
caOptional = true
|
||||||
|
```
|
||||||
|
|
||||||
#### `tls.cert`
|
#### `tls.cert`
|
||||||
|
|
||||||
The public certificate used for the secure connection to the authentication server.
|
The public certificate used for the secure connection to the authentication server.
|
||||||
|
@ -523,15 +523,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.tls.key=path/to/foo.key"
|
- "traefik.http.middlewares.test-auth.forwardauth.tls.key=path/to/foo.key"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
[http.middlewares.test-auth.forwardAuth.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -543,6 +534,15 @@ http:
|
||||||
key: "path/to/foo.key"
|
key: "path/to/foo.key"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
[http.middlewares.test-auth.forwardAuth.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
|
|
||||||
For security reasons, the field does not exist for Kubernetes IngressRoute, and one should use the `secret` field instead.
|
For security reasons, the field does not exist for Kubernetes IngressRoute, and one should use the `secret` field instead.
|
||||||
|
@ -598,15 +598,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.tls.key=path/to/foo.key"
|
- "traefik.http.middlewares.test-auth.forwardauth.tls.key=path/to/foo.key"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
[http.middlewares.test-auth.forwardAuth.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -618,6 +609,15 @@ http:
|
||||||
key: "path/to/foo.key"
|
key: "path/to/foo.key"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
[http.middlewares.test-auth.forwardAuth.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
|
|
||||||
For security reasons, the field does not exist for Kubernetes IngressRoute, and one should use the `secret` field instead.
|
For security reasons, the field does not exist for Kubernetes IngressRoute, and one should use the `secret` field instead.
|
||||||
|
@ -658,14 +658,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-auth.forwardauth.tls.InsecureSkipVerify=true"
|
- "traefik.http.middlewares.test-auth.forwardauth.tls.InsecureSkipVerify=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-auth.forwardAuth]
|
|
||||||
address = "https://example.com/auth"
|
|
||||||
[http.middlewares.test-auth.forwardAuth.tls]
|
|
||||||
insecureSkipVerify: true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -675,3 +667,11 @@ http:
|
||||||
tls:
|
tls:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-auth.forwardAuth]
|
||||||
|
address = "https://example.com/auth"
|
||||||
|
[http.middlewares.test-auth.forwardAuth.tls]
|
||||||
|
insecureSkipVerify: true
|
||||||
|
```
|
||||||
|
|
|
@ -50,15 +50,6 @@ labels:
|
||||||
- "traefik.http.middlewares.testheader.headers.customresponseheaders.X-Custom-Response-Header=value"
|
- "traefik.http.middlewares.testheader.headers.customresponseheaders.X-Custom-Response-Header=value"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.testHeader.headers]
|
|
||||||
[http.middlewares.testHeader.headers.customRequestHeaders]
|
|
||||||
X-Script-Name = "test"
|
|
||||||
[http.middlewares.testHeader.headers.customResponseHeaders]
|
|
||||||
X-Custom-Response-Header = "value"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -70,6 +61,15 @@ http:
|
||||||
X-Custom-Response-Header: "value"
|
X-Custom-Response-Header: "value"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.testHeader.headers]
|
||||||
|
[http.middlewares.testHeader.headers.customRequestHeaders]
|
||||||
|
X-Script-Name = "test"
|
||||||
|
[http.middlewares.testHeader.headers.customResponseHeaders]
|
||||||
|
X-Custom-Response-Header = "value"
|
||||||
|
```
|
||||||
|
|
||||||
### Adding and Removing Headers
|
### Adding and Removing Headers
|
||||||
|
|
||||||
In the following example, requests are proxied with an extra `X-Script-Name` header while their `X-Custom-Request-Header` header gets stripped,
|
In the following example, requests are proxied with an extra `X-Script-Name` header while their `X-Custom-Request-Header` header gets stripped,
|
||||||
|
@ -78,6 +78,8 @@ and responses are stripped of their `X-Custom-Response-Header` header.
|
||||||
```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.customrequestheaders.X-Custom-Request-Header="
|
||||||
|
- "traefik.http.middlewares.testheader.headers.customresponseheaders.X-Custom-Response-Header="
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="Kubernetes"
|
```yaml tab="Kubernetes"
|
||||||
|
@ -96,27 +98,23 @@ spec:
|
||||||
|
|
||||||
```yaml tab="Consul Catalog"
|
```yaml tab="Consul Catalog"
|
||||||
- "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.customrequestheaders.X-Custom-Request-Header="
|
||||||
|
- "traefik.http.middlewares.testheader.headers.customresponseheaders.X-Custom-Response-Header="
|
||||||
```
|
```
|
||||||
|
|
||||||
```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.customrequestheaders.X-Custom-Request-Header": "",
|
||||||
|
"traefik.http.middlewares.testheader.headers.customresponseheaders.X-Custom-Response-Header": "",
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
```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.customrequestheaders.X-Custom-Request-Header="
|
||||||
|
- "traefik.http.middlewares.testheader.headers.customresponseheaders.X-Custom-Response-Header="
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.testHeader.headers]
|
|
||||||
[http.middlewares.testHeader.headers.customRequestHeaders]
|
|
||||||
X-Script-Name = "test" # Adds
|
|
||||||
X-Custom-Request-Header = "" # Removes
|
|
||||||
[http.middlewares.testHeader.headers.customResponseHeaders]
|
|
||||||
X-Custom-Response-Header = "" # Removes
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
|
@ -131,6 +129,16 @@ http:
|
||||||
X-Custom-Response-Header: "" # Removes
|
X-Custom-Response-Header: "" # Removes
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.testHeader.headers]
|
||||||
|
[http.middlewares.testHeader.headers.customRequestHeaders]
|
||||||
|
X-Script-Name = "test" # Adds
|
||||||
|
X-Custom-Request-Header = "" # Removes
|
||||||
|
[http.middlewares.testHeader.headers.customResponseHeaders]
|
||||||
|
X-Custom-Response-Header = "" # Removes
|
||||||
|
```
|
||||||
|
|
||||||
### Using Security Headers
|
### Using Security Headers
|
||||||
|
|
||||||
Security-related headers (HSTS headers, Browser XSS filter, etc) can be managed similarly to custom headers as shown above.
|
Security-related headers (HSTS headers, Browser XSS filter, etc) can be managed similarly to custom headers as shown above.
|
||||||
|
@ -171,13 +179,6 @@ labels:
|
||||||
- "traefik.http.middlewares.testheader.headers.browserxssfilter=true"
|
- "traefik.http.middlewares.testheader.headers.browserxssfilter=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.testHeader.headers]
|
|
||||||
frameDeny = true
|
|
||||||
browserxssfilter = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -187,6 +188,13 @@ http:
|
||||||
browserxssfilter: true
|
browserxssfilter: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.testHeader.headers]
|
||||||
|
frameDeny = true
|
||||||
|
browserxssfilter = true
|
||||||
|
```
|
||||||
|
|
||||||
### CORS Headers
|
### CORS Headers
|
||||||
|
|
||||||
CORS (Cross-Origin Resource Sharing) headers can be added and configured in a manner similar to the custom headers above.
|
CORS (Cross-Origin Resource Sharing) headers can be added and configured in a manner similar to the custom headers above.
|
||||||
|
@ -242,15 +250,6 @@ labels:
|
||||||
- "traefik.http.middlewares.testheader.headers.addvaryheader=true"
|
- "traefik.http.middlewares.testheader.headers.addvaryheader=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.testHeader.headers]
|
|
||||||
accessControlAllowMethods= ["GET", "OPTIONS", "PUT"]
|
|
||||||
accessControlAllowOriginList = ["https://foo.bar.org","https://example.org"]
|
|
||||||
accessControlMaxAge = 100
|
|
||||||
addVaryHeader = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -267,6 +266,15 @@ http:
|
||||||
addVaryHeader: true
|
addVaryHeader: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.testHeader.headers]
|
||||||
|
accessControlAllowMethods= ["GET", "OPTIONS", "PUT"]
|
||||||
|
accessControlAllowOriginList = ["https://foo.bar.org","https://example.org"]
|
||||||
|
accessControlMaxAge = 100
|
||||||
|
addVaryHeader = true
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### General
|
### General
|
||||||
|
|
|
@ -41,13 +41,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-inflightreq.inflightreq.amount=10"
|
- "traefik.http.middlewares.test-inflightreq.inflightreq.amount=10"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Limiting to 10 simultaneous connections
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-inflightreq.inFlightReq]
|
|
||||||
amount = 10
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Limiting to 10 simultaneous connections
|
# Limiting to 10 simultaneous connections
|
||||||
http:
|
http:
|
||||||
|
@ -57,6 +50,13 @@ http:
|
||||||
amount: 10
|
amount: 10
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Limiting to 10 simultaneous connections
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-inflightreq.inFlightReq]
|
||||||
|
amount = 10
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### `amount`
|
### `amount`
|
||||||
|
@ -96,13 +96,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-inflightreq.inflightreq.amount=10"
|
- "traefik.http.middlewares.test-inflightreq.inflightreq.amount=10"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Limiting to 10 simultaneous connections
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-inflightreq.inFlightReq]
|
|
||||||
amount = 10
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Limiting to 10 simultaneous connections
|
# Limiting to 10 simultaneous connections
|
||||||
http:
|
http:
|
||||||
|
@ -112,6 +105,13 @@ http:
|
||||||
amount: 10
|
amount: 10
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Limiting to 10 simultaneous connections
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-inflightreq.inFlightReq]
|
||||||
|
amount = 10
|
||||||
|
```
|
||||||
|
|
||||||
### `sourceCriterion`
|
### `sourceCriterion`
|
||||||
|
|
||||||
The `sourceCriterion` option defines what criterion is used to group requests as originating from a common source.
|
The `sourceCriterion` option defines what criterion is used to group requests as originating from a common source.
|
||||||
|
@ -171,13 +171,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-inflightreq.inflightreq.sourcecriterion.ipstrategy.depth=2"
|
- "traefik.http.middlewares.test-inflightreq.inflightreq.sourcecriterion.ipstrategy.depth=2"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-inflightreq.inflightreq]
|
|
||||||
[http.middlewares.test-inflightreq.inFlightReq.sourceCriterion.ipStrategy]
|
|
||||||
depth = 2
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -188,6 +181,13 @@ http:
|
||||||
depth: 2
|
depth: 2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-inflightreq.inflightreq]
|
||||||
|
[http.middlewares.test-inflightreq.inFlightReq.sourceCriterion.ipStrategy]
|
||||||
|
depth = 2
|
||||||
|
```
|
||||||
|
|
||||||
##### `ipStrategy.excludedIPs`
|
##### `ipStrategy.excludedIPs`
|
||||||
|
|
||||||
`excludedIPs` configures Traefik to scan the `X-Forwarded-For` header and select the first IP not in the list.
|
`excludedIPs` configures Traefik to scan the `X-Forwarded-For` header and select the first IP not in the list.
|
||||||
|
@ -238,13 +238,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-inflightreq.inflightreq.sourcecriterion.ipstrategy.excludedips=127.0.0.1/32, 192.168.1.7"
|
- "traefik.http.middlewares.test-inflightreq.inflightreq.sourcecriterion.ipstrategy.excludedips=127.0.0.1/32, 192.168.1.7"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-inflightreq.inflightreq]
|
|
||||||
[http.middlewares.test-inflightreq.inFlightReq.sourceCriterion.ipStrategy]
|
|
||||||
excludedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -257,6 +250,13 @@ http:
|
||||||
- "192.168.1.7"
|
- "192.168.1.7"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-inflightreq.inflightreq]
|
||||||
|
[http.middlewares.test-inflightreq.inFlightReq.sourceCriterion.ipStrategy]
|
||||||
|
excludedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
||||||
|
```
|
||||||
|
|
||||||
#### `sourceCriterion.requestHeaderName`
|
#### `sourceCriterion.requestHeaderName`
|
||||||
|
|
||||||
Name of the header used to group incoming requests.
|
Name of the header used to group incoming requests.
|
||||||
|
@ -292,13 +292,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-inflightreq.inflightreq.sourcecriterion.requestheadername=username"
|
- "traefik.http.middlewares.test-inflightreq.inflightreq.sourcecriterion.requestheadername=username"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-inflightreq.inflightreq]
|
|
||||||
[http.middlewares.test-inflightreq.inFlightReq.sourceCriterion]
|
|
||||||
requestHeaderName = "username"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -308,6 +301,13 @@ http:
|
||||||
requestHeaderName: username
|
requestHeaderName: username
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-inflightreq.inflightreq]
|
||||||
|
[http.middlewares.test-inflightreq.inFlightReq.sourceCriterion]
|
||||||
|
requestHeaderName = "username"
|
||||||
|
```
|
||||||
|
|
||||||
#### `sourceCriterion.requestHost`
|
#### `sourceCriterion.requestHost`
|
||||||
|
|
||||||
Whether to consider the request host as the source.
|
Whether to consider the request host as the source.
|
||||||
|
@ -343,13 +343,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-inflightreq.inflightreq.sourcecriterion.requesthost=true"
|
- "traefik.http.middlewares.test-inflightreq.inflightreq.sourcecriterion.requesthost=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-inflightreq.inflightreq]
|
|
||||||
[http.middlewares.test-inflightreq.inFlightReq.sourceCriterion]
|
|
||||||
requestHost = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -358,3 +351,10 @@ http:
|
||||||
sourceCriterion:
|
sourceCriterion:
|
||||||
requestHost: true
|
requestHost: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-inflightreq.inflightreq]
|
||||||
|
[http.middlewares.test-inflightreq.inFlightReq.sourceCriterion]
|
||||||
|
requestHost = true
|
||||||
|
```
|
||||||
|
|
|
@ -44,13 +44,6 @@ 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)"
|
|
||||||
# Accepts request from defined IP
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ipwhitelist.ipWhiteList]
|
|
||||||
sourceRange = ["127.0.0.1/32", "192.168.1.7"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Accepts request from defined IP
|
# Accepts request from defined IP
|
||||||
http:
|
http:
|
||||||
|
@ -62,6 +55,13 @@ http:
|
||||||
- "192.168.1.7"
|
- "192.168.1.7"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Accepts request from defined IP
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ipwhitelist.ipWhiteList]
|
||||||
|
sourceRange = ["127.0.0.1/32", "192.168.1.7"]
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### `sourceRange`
|
### `sourceRange`
|
||||||
|
@ -131,15 +131,6 @@ labels:
|
||||||
- "traefik.http.middlewares.testIPwhitelist.ipwhitelist.ipstrategy.depth=2"
|
- "traefik.http.middlewares.testIPwhitelist.ipwhitelist.ipstrategy.depth=2"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Whitelisting Based on `X-Forwarded-For` with `depth=2`
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ipwhitelist.ipWhiteList]
|
|
||||||
sourceRange = ["127.0.0.1/32", "192.168.1.7"]
|
|
||||||
[http.middlewares.test-ipwhitelist.ipWhiteList.ipStrategy]
|
|
||||||
depth = 2
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Whitelisting Based on `X-Forwarded-For` with `depth=2`
|
# Whitelisting Based on `X-Forwarded-For` with `depth=2`
|
||||||
http:
|
http:
|
||||||
|
@ -153,6 +144,15 @@ http:
|
||||||
depth: 2
|
depth: 2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Whitelisting Based on `X-Forwarded-For` with `depth=2`
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ipwhitelist.ipWhiteList]
|
||||||
|
sourceRange = ["127.0.0.1/32", "192.168.1.7"]
|
||||||
|
[http.middlewares.test-ipwhitelist.ipWhiteList.ipStrategy]
|
||||||
|
depth = 2
|
||||||
|
```
|
||||||
|
|
||||||
#### `ipStrategy.excludedIPs`
|
#### `ipStrategy.excludedIPs`
|
||||||
|
|
||||||
`excludedIPs` configures Traefik to scan the `X-Forwarded-For` header and select the first IP not in the list.
|
`excludedIPs` configures Traefik to scan the `X-Forwarded-For` header and select the first IP not in the list.
|
||||||
|
@ -206,14 +206,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-ipwhitelist.ipwhitelist.ipstrategy.excludedips=127.0.0.1/32, 192.168.1.7"
|
- "traefik.http.middlewares.test-ipwhitelist.ipwhitelist.ipstrategy.excludedips=127.0.0.1/32, 192.168.1.7"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Exclude from `X-Forwarded-For`
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ipwhitelist.ipWhiteList]
|
|
||||||
[http.middlewares.test-ipwhitelist.ipWhiteList.ipStrategy]
|
|
||||||
excludedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Exclude from `X-Forwarded-For`
|
# Exclude from `X-Forwarded-For`
|
||||||
http:
|
http:
|
||||||
|
@ -225,3 +217,11 @@ http:
|
||||||
- "127.0.0.1/32"
|
- "127.0.0.1/32"
|
||||||
- "192.168.1.7"
|
- "192.168.1.7"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Exclude from `X-Forwarded-For`
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ipwhitelist.ipWhiteList]
|
||||||
|
[http.middlewares.test-ipwhitelist.ipWhiteList.ipStrategy]
|
||||||
|
excludedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
||||||
|
```
|
||||||
|
|
|
@ -46,13 +46,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.pem=true"
|
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.pem=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Pass the escaped pem in the `X-Forwarded-Tls-Client-Cert` header.
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-passtlsclientcert.passTLSClientCert]
|
|
||||||
pem = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# 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:
|
http:
|
||||||
|
@ -62,6 +55,13 @@ http:
|
||||||
pem: true
|
pem: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Pass the escaped pem in the `X-Forwarded-Tls-Client-Cert` header.
|
||||||
|
[http.middlewares]
|
||||||
|
[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"
|
||||||
|
@ -182,32 +182,6 @@ http:
|
||||||
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.serialnumber=true"
|
- "traefik.http.middlewares.test-passtlsclientcert.passtlsclientcert.info.issuer.serialnumber=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Pass all the available info in the `X-Forwarded-Tls-Client-Cert-Info` header
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-passtlsclientcert.passTLSClientCert]
|
|
||||||
[http.middlewares.test-passtlsclientcert.passTLSClientCert.info]
|
|
||||||
notAfter = true
|
|
||||||
notBefore = true
|
|
||||||
sans = true
|
|
||||||
[http.middlewares.test-passtlsclientcert.passTLSClientCert.info.subject]
|
|
||||||
country = true
|
|
||||||
province = true
|
|
||||||
locality = true
|
|
||||||
organization = true
|
|
||||||
commonName = true
|
|
||||||
serialNumber = true
|
|
||||||
domainComponent = true
|
|
||||||
[http.middlewares.test-passtlsclientcert.passTLSClientCert.info.issuer]
|
|
||||||
country = true
|
|
||||||
province = true
|
|
||||||
locality = true
|
|
||||||
organization = true
|
|
||||||
commonName = true
|
|
||||||
serialNumber = true
|
|
||||||
domainComponent = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# 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:
|
http:
|
||||||
|
@ -236,6 +210,32 @@ http:
|
||||||
domainComponent: true
|
domainComponent: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Pass all the available info in the `X-Forwarded-Tls-Client-Cert-Info` header
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-passtlsclientcert.passTLSClientCert]
|
||||||
|
[http.middlewares.test-passtlsclientcert.passTLSClientCert.info]
|
||||||
|
notAfter = true
|
||||||
|
notBefore = true
|
||||||
|
sans = true
|
||||||
|
[http.middlewares.test-passtlsclientcert.passTLSClientCert.info.subject]
|
||||||
|
country = true
|
||||||
|
province = true
|
||||||
|
locality = true
|
||||||
|
organization = true
|
||||||
|
commonName = true
|
||||||
|
serialNumber = true
|
||||||
|
domainComponent = true
|
||||||
|
[http.middlewares.test-passtlsclientcert.passTLSClientCert.info.issuer]
|
||||||
|
country = true
|
||||||
|
province = true
|
||||||
|
locality = true
|
||||||
|
organization = true
|
||||||
|
commonName = true
|
||||||
|
serialNumber = true
|
||||||
|
domainComponent = true
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### General
|
### General
|
||||||
|
|
|
@ -50,15 +50,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-ratelimit.ratelimit.burst=50"
|
- "traefik.http.middlewares.test-ratelimit.ratelimit.burst=50"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Here, an average of 100 requests per second is allowed.
|
|
||||||
# In addition, a burst of 50 requests is allowed.
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit]
|
|
||||||
average = 100
|
|
||||||
burst = 50
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Here, an average of 100 requests per second is allowed.
|
# Here, an average of 100 requests per second is allowed.
|
||||||
# In addition, a burst of 50 requests is allowed.
|
# In addition, a burst of 50 requests is allowed.
|
||||||
|
@ -70,6 +61,15 @@ http:
|
||||||
burst: 50
|
burst: 50
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Here, an average of 100 requests per second is allowed.
|
||||||
|
# In addition, a burst of 50 requests is allowed.
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit]
|
||||||
|
average = 100
|
||||||
|
burst = 50
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### `average`
|
### `average`
|
||||||
|
@ -114,13 +114,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-ratelimit.ratelimit.average=100"
|
- "traefik.http.middlewares.test-ratelimit.ratelimit.average=100"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# 100 reqs/s
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit]
|
|
||||||
average = 100
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# 100 reqs/s
|
# 100 reqs/s
|
||||||
http:
|
http:
|
||||||
|
@ -130,6 +123,13 @@ http:
|
||||||
average: 100
|
average: 100
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# 100 reqs/s
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit]
|
||||||
|
average = 100
|
||||||
|
```
|
||||||
|
|
||||||
### `period`
|
### `period`
|
||||||
|
|
||||||
`period`, in combination with `average`, defines the actual maximum rate, such as:
|
`period`, in combination with `average`, defines the actual maximum rate, such as:
|
||||||
|
@ -179,14 +179,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-ratelimit.ratelimit.period=1m"
|
- "traefik.http.middlewares.test-ratelimit.ratelimit.period=1m"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# 6 reqs/minute
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit]
|
|
||||||
average = 6
|
|
||||||
period = "1m"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# 6 reqs/minute
|
# 6 reqs/minute
|
||||||
http:
|
http:
|
||||||
|
@ -197,6 +189,14 @@ http:
|
||||||
period: 1m
|
period: 1m
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# 6 reqs/minute
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit]
|
||||||
|
average = 6
|
||||||
|
period = "1m"
|
||||||
|
```
|
||||||
|
|
||||||
### `burst`
|
### `burst`
|
||||||
|
|
||||||
`burst` is the maximum number of requests allowed to go through in the same arbitrarily small period of time.
|
`burst` is the maximum number of requests allowed to go through in the same arbitrarily small period of time.
|
||||||
|
@ -233,12 +233,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-ratelimit.ratelimit.burst=100"
|
- "traefik.http.middlewares.test-ratelimit.ratelimit.burst=100"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit]
|
|
||||||
burst = 100
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -247,6 +241,12 @@ http:
|
||||||
burst: 100
|
burst: 100
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit]
|
||||||
|
burst = 100
|
||||||
|
```
|
||||||
|
|
||||||
### `sourceCriterion`
|
### `sourceCriterion`
|
||||||
|
|
||||||
The `sourceCriterion` option defines what criterion is used to group requests as originating from a common source.
|
The `sourceCriterion` option defines what criterion is used to group requests as originating from a common source.
|
||||||
|
@ -306,13 +306,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-ratelimit.ratelimit.sourcecriterion.ipstrategy.depth=2"
|
- "traefik.http.middlewares.test-ratelimit.ratelimit.sourcecriterion.ipstrategy.depth=2"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit.sourceCriterion.ipStrategy]
|
|
||||||
depth = 2
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -323,20 +316,54 @@ http:
|
||||||
depth: 2
|
depth: 2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit.sourceCriterion.ipStrategy]
|
||||||
|
depth = 2
|
||||||
|
```
|
||||||
|
|
||||||
##### `ipStrategy.excludedIPs`
|
##### `ipStrategy.excludedIPs`
|
||||||
|
|
||||||
`excludedIPs` configures Traefik to scan the `X-Forwarded-For` header and select the first IP not in the list.
|
!!! important "Contrary to what the name might suggest, this option is _not_ about excluding an IP from the rate limiter, and therefore cannot be used to deactivate rate limiting for some IPs."
|
||||||
|
|
||||||
!!! important "If `depth` is specified, `excludedIPs` is ignored."
|
!!! important "If `depth` is specified, `excludedIPs` is ignored."
|
||||||
|
|
||||||
!!! example "Example of ExcludedIPs & X-Forwarded-For"
|
`excludedIPs` is meant to address two classes of somewhat distinct use-cases:
|
||||||
|
|
||||||
| `X-Forwarded-For` | `excludedIPs` | clientIP |
|
1. Distinguish IPs which are behind the same (set of) reverse-proxies so that each of them contributes, independently to the others,
|
||||||
|-----------------------------------------|-----------------------|--------------|
|
to its own rate-limit "bucket" (cf the [leaky bucket analogy](https://wikipedia.org/wiki/Leaky_bucket)).
|
||||||
| `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` | `"12.0.0.1,13.0.0.1"` | `"11.0.0.1"` |
|
In this case, `excludedIPs` should be set to match the list of `X-Forwarded-For IPs` that are to be excluded,
|
||||||
| `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` | `"15.0.0.1,13.0.0.1"` | `"12.0.0.1"` |
|
in order to find the actual clientIP.
|
||||||
| `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` | `"10.0.0.1,13.0.0.1"` | `"12.0.0.1"` |
|
|
||||||
| `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` | `"15.0.0.1,16.0.0.1"` | `"13.0.0.1"` |
|
!!! example "Each IP as a distinct source"
|
||||||
|
|
||||||
|
| X-Forwarded-For | excludedIPs | clientIP |
|
||||||
|
|--------------------------------|-----------------------|--------------|
|
||||||
|
| `"10.0.0.1,11.0.0.1,12.0.0.1"` | `"11.0.0.1,12.0.0.1"` | `"10.0.0.1"` |
|
||||||
|
| `"10.0.0.2,11.0.0.1,12.0.0.1"` | `"11.0.0.1,12.0.0.1"` | `"10.0.0.2"` |
|
||||||
|
|
||||||
|
2. Group together a set of IPs (also behind a common set of reverse-proxies) so that they are considered the same source,
|
||||||
|
and all contribute to the same rate-limit bucket.
|
||||||
|
|
||||||
|
!!! example "Group IPs together as same source"
|
||||||
|
|
||||||
|
| X-Forwarded-For | excludedIPs | clientIP |
|
||||||
|
|--------------------------------|--------------|--------------|
|
||||||
|
| `"10.0.0.1,11.0.0.1,12.0.0.1"` | `"12.0.0.1"` | `"11.0.0.1"` |
|
||||||
|
| `"10.0.0.2,11.0.0.1,12.0.0.1"` | `"12.0.0.1"` | `"11.0.0.1"` |
|
||||||
|
| `"10.0.0.3,11.0.0.1,12.0.0.1"` | `"12.0.0.1"` | `"11.0.0.1"` |
|
||||||
|
|
||||||
|
For completeness, below are additional examples to illustrate how the matching works.
|
||||||
|
For a given request the list of `X-Forwarded-For` IPs is checked from most recent to most distant against the `excludedIPs` pool,
|
||||||
|
and the first IP that is _not_ in the pool (if any) is returned.
|
||||||
|
|
||||||
|
!!! example "Matching for clientIP"
|
||||||
|
|
||||||
|
| X-Forwarded-For | excludedIPs | clientIP |
|
||||||
|
|--------------------------------|-----------------------|--------------|
|
||||||
|
| `"10.0.0.1,11.0.0.1,13.0.0.1"` | `"11.0.0.1"` | `"13.0.0.1"` |
|
||||||
|
| `"10.0.0.1,11.0.0.1,13.0.0.1"` | `"15.0.0.1,16.0.0.1"` | `"13.0.0.1"` |
|
||||||
| `"10.0.0.1,11.0.0.1"` | `"10.0.0.1,11.0.0.1"` | `""` |
|
| `"10.0.0.1,11.0.0.1"` | `"10.0.0.1,11.0.0.1"` | `""` |
|
||||||
|
|
||||||
```yaml tab="Docker"
|
```yaml tab="Docker"
|
||||||
|
@ -373,13 +400,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-ratelimit.ratelimit.sourcecriterion.ipstrategy.excludedips=127.0.0.1/32, 192.168.1.7"
|
- "traefik.http.middlewares.test-ratelimit.ratelimit.sourcecriterion.ipstrategy.excludedips=127.0.0.1/32, 192.168.1.7"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit.sourceCriterion.ipStrategy]
|
|
||||||
excludedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -392,6 +412,13 @@ http:
|
||||||
- "192.168.1.7"
|
- "192.168.1.7"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit.sourceCriterion.ipStrategy]
|
||||||
|
excludedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
||||||
|
```
|
||||||
|
|
||||||
#### `sourceCriterion.requestHeaderName`
|
#### `sourceCriterion.requestHeaderName`
|
||||||
|
|
||||||
Name of the header used to group incoming requests.
|
Name of the header used to group incoming requests.
|
||||||
|
@ -427,13 +454,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-ratelimit.ratelimit.sourcecriterion.requestheadername=username"
|
- "traefik.http.middlewares.test-ratelimit.ratelimit.sourcecriterion.requestheadername=username"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit.sourceCriterion]
|
|
||||||
requestHeaderName = "username"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -443,6 +463,13 @@ http:
|
||||||
requestHeaderName: username
|
requestHeaderName: username
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit.sourceCriterion]
|
||||||
|
requestHeaderName = "username"
|
||||||
|
```
|
||||||
|
|
||||||
#### `sourceCriterion.requestHost`
|
#### `sourceCriterion.requestHost`
|
||||||
|
|
||||||
Whether to consider the request host as the source.
|
Whether to consider the request host as the source.
|
||||||
|
@ -478,13 +505,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-ratelimit.ratelimit.sourcecriterion.requesthost=true"
|
- "traefik.http.middlewares.test-ratelimit.ratelimit.sourcecriterion.requesthost=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit]
|
|
||||||
[http.middlewares.test-ratelimit.rateLimit.sourceCriterion]
|
|
||||||
requestHost = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -493,3 +513,10 @@ http:
|
||||||
sourceCriterion:
|
sourceCriterion:
|
||||||
requestHost: true
|
requestHost: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit]
|
||||||
|
[http.middlewares.test-ratelimit.rateLimit.sourceCriterion]
|
||||||
|
requestHost = true
|
||||||
|
```
|
||||||
|
|
|
@ -53,14 +53,6 @@ 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)"
|
|
||||||
# Redirect with domain replacement
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-redirectregex.redirectRegex]
|
|
||||||
regex = "^http://localhost/(.*)"
|
|
||||||
replacement = "http://mydomain/${1}"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Redirect with domain replacement
|
# Redirect with domain replacement
|
||||||
http:
|
http:
|
||||||
|
@ -71,6 +63,14 @@ http:
|
||||||
replacement: "http://mydomain/${1}"
|
replacement: "http://mydomain/${1}"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Redirect with domain replacement
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-redirectregex.redirectRegex]
|
||||||
|
regex = "^http://localhost/(.*)"
|
||||||
|
replacement = "http://mydomain/${1}"
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
!!! tip
|
!!! tip
|
||||||
|
|
|
@ -51,14 +51,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.permanent=true"
|
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.permanent=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Redirect to https
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-redirectscheme.redirectScheme]
|
|
||||||
scheme = "https"
|
|
||||||
permanent = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Redirect to https
|
# Redirect to https
|
||||||
http:
|
http:
|
||||||
|
@ -69,6 +61,14 @@ http:
|
||||||
permanent: true
|
permanent: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Redirect to https
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-redirectscheme.redirectScheme]
|
||||||
|
scheme = "https"
|
||||||
|
permanent = true
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### `permanent`
|
### `permanent`
|
||||||
|
@ -115,14 +115,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.permanent=true"
|
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.permanent=true"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Redirect to https
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-redirectscheme.redirectScheme]
|
|
||||||
# ...
|
|
||||||
permanent = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Redirect to https
|
# Redirect to https
|
||||||
http:
|
http:
|
||||||
|
@ -133,6 +125,14 @@ http:
|
||||||
permanent: true
|
permanent: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Redirect to https
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-redirectscheme.redirectScheme]
|
||||||
|
# ...
|
||||||
|
permanent = true
|
||||||
|
```
|
||||||
|
|
||||||
### `scheme`
|
### `scheme`
|
||||||
|
|
||||||
The `scheme` option defines the scheme of the new URL.
|
The `scheme` option defines the scheme of the new URL.
|
||||||
|
@ -172,13 +172,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.scheme=https"
|
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.scheme=https"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Redirect to https
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-redirectscheme.redirectScheme]
|
|
||||||
scheme = "https"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Redirect to https
|
# Redirect to https
|
||||||
http:
|
http:
|
||||||
|
@ -188,6 +181,13 @@ http:
|
||||||
scheme: https
|
scheme: https
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Redirect to https
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-redirectscheme.redirectScheme]
|
||||||
|
scheme = "https"
|
||||||
|
```
|
||||||
|
|
||||||
### `port`
|
### `port`
|
||||||
|
|
||||||
The `port` option defines the port of the new URL.
|
The `port` option defines the port of the new URL.
|
||||||
|
@ -232,14 +232,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.port=443"
|
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.port=443"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Redirect to https
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-redirectscheme.redirectScheme]
|
|
||||||
# ...
|
|
||||||
port = 443
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Redirect to https
|
# Redirect to https
|
||||||
http:
|
http:
|
||||||
|
@ -250,4 +242,12 @@ http:
|
||||||
port: "443"
|
port: "443"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Redirect to https
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-redirectscheme.redirectScheme]
|
||||||
|
# ...
|
||||||
|
port = 443
|
||||||
|
```
|
||||||
|
|
||||||
!!! info "Port in this configuration is a string, not a numeric value."
|
!!! info "Port in this configuration is a string, not a numeric value."
|
||||||
|
|
|
@ -45,13 +45,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-replacepath.replacepath.path=/foo"
|
- "traefik.http.middlewares.test-replacepath.replacepath.path=/foo"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Replace the path with /foo
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-replacepath.replacePath]
|
|
||||||
path = "/foo"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Replace the path with /foo
|
# Replace the path with /foo
|
||||||
http:
|
http:
|
||||||
|
@ -61,6 +54,13 @@ http:
|
||||||
path: "/foo"
|
path: "/foo"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Replace the path with /foo
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-replacepath.replacePath]
|
||||||
|
path = "/foo"
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### General
|
### General
|
||||||
|
|
|
@ -50,14 +50,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-replacepathregex.replacepathregex.replacement=/bar/$1"
|
- "traefik.http.middlewares.test-replacepathregex.replacepathregex.replacement=/bar/$1"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Replace path with regex
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-replacepathregex.replacePathRegex]
|
|
||||||
regex = "^/foo/(.*)"
|
|
||||||
replacement = "/bar/$1"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Replace path with regex
|
# Replace path with regex
|
||||||
http:
|
http:
|
||||||
|
@ -68,6 +60,14 @@ http:
|
||||||
replacement: "/bar/$1"
|
replacement: "/bar/$1"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Replace path with regex
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-replacepathregex.replacePathRegex]
|
||||||
|
regex = "^/foo/(.*)"
|
||||||
|
replacement = "/bar/$1"
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### General
|
### General
|
||||||
|
|
|
@ -52,14 +52,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-retry.retry.initialinterval=100ms"
|
- "traefik.http.middlewares.test-retry.retry.initialinterval=100ms"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Retry 4 times with exponential backoff
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-retry.retry]
|
|
||||||
attempts = 4
|
|
||||||
initialInterval = "100ms"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Retry 4 times with exponential backoff
|
# Retry 4 times with exponential backoff
|
||||||
http:
|
http:
|
||||||
|
@ -70,6 +62,14 @@ http:
|
||||||
initialInterval: 100ms
|
initialInterval: 100ms
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Retry 4 times with exponential backoff
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-retry.retry]
|
||||||
|
attempts = 4
|
||||||
|
initialInterval = "100ms"
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### `attempts`
|
### `attempts`
|
||||||
|
|
|
@ -47,13 +47,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-stripprefix.stripprefix.prefixes=/foobar,/fiibar"
|
- "traefik.http.middlewares.test-stripprefix.stripprefix.prefixes=/foobar,/fiibar"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Strip prefix /foobar and /fiibar
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-stripprefix.stripPrefix]
|
|
||||||
prefixes = ["/foobar", "/fiibar"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Strip prefix /foobar and /fiibar
|
# Strip prefix /foobar and /fiibar
|
||||||
http:
|
http:
|
||||||
|
@ -65,6 +58,13 @@ http:
|
||||||
- "/fiibar"
|
- "/fiibar"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Strip prefix /foobar and /fiibar
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-stripprefix.stripPrefix]
|
||||||
|
prefixes = ["/foobar", "/fiibar"]
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### General
|
### General
|
||||||
|
@ -149,13 +149,6 @@ labels:
|
||||||
- "traefik.http.middlewares.example.stripprefix.forceSlash=false"
|
- "traefik.http.middlewares.example.stripprefix.forceSlash=false"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.example.stripPrefix]
|
|
||||||
prefixes = ["/foobar"]
|
|
||||||
forceSlash = false
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -165,3 +158,10 @@ http:
|
||||||
- "/foobar"
|
- "/foobar"
|
||||||
forceSlash: false
|
forceSlash: false
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.example.stripPrefix]
|
||||||
|
prefixes = ["/foobar"]
|
||||||
|
forceSlash = false
|
||||||
|
```
|
||||||
|
|
|
@ -38,12 +38,6 @@ labels:
|
||||||
- "traefik.http.middlewares.test-stripprefixregex.stripprefixregex.regex=/foo/[a-z0-9]+/[0-9]+/"
|
- "traefik.http.middlewares.test-stripprefixregex.stripprefixregex.regex=/foo/[a-z0-9]+/[0-9]+/"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.test-stripprefixregex.stripPrefixRegex]
|
|
||||||
regex = ["/foo/[a-z0-9]+/[0-9]+/"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -53,6 +47,12 @@ http:
|
||||||
- "/foo/[a-z0-9]+/[0-9]+/"
|
- "/foo/[a-z0-9]+/[0-9]+/"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-stripprefixregex.stripPrefixRegex]
|
||||||
|
regex = ["/foo/[a-z0-9]+/[0-9]+/"]
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
### General
|
### General
|
||||||
|
|
|
@ -77,26 +77,6 @@ labels:
|
||||||
- "traefik.http.routers.router1.middlewares=foo-add-prefix@rancher"
|
- "traefik.http.routers.router1.middlewares=foo-add-prefix@rancher"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# As TOML Configuration File
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.router1]
|
|
||||||
service = "myService"
|
|
||||||
middlewares = ["foo-add-prefix"]
|
|
||||||
rule = "Host(`example.com`)"
|
|
||||||
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.foo-add-prefix.addPrefix]
|
|
||||||
prefix = "/foo"
|
|
||||||
|
|
||||||
[http.services]
|
|
||||||
[http.services.service1]
|
|
||||||
[http.services.service1.loadBalancer]
|
|
||||||
|
|
||||||
[[http.services.service1.loadBalancer.servers]]
|
|
||||||
url = "http://127.0.0.1:80"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# As YAML Configuration File
|
# As YAML Configuration File
|
||||||
http:
|
http:
|
||||||
|
@ -119,6 +99,26 @@ http:
|
||||||
- url: "http://127.0.0.1:80"
|
- url: "http://127.0.0.1:80"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# As TOML Configuration File
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.router1]
|
||||||
|
service = "myService"
|
||||||
|
middlewares = ["foo-add-prefix"]
|
||||||
|
rule = "Host(`example.com`)"
|
||||||
|
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.foo-add-prefix.addPrefix]
|
||||||
|
prefix = "/foo"
|
||||||
|
|
||||||
|
[http.services]
|
||||||
|
[http.services.service1]
|
||||||
|
[http.services.service1.loadBalancer]
|
||||||
|
|
||||||
|
[[http.services.service1.loadBalancer.servers]]
|
||||||
|
url = "http://127.0.0.1:80"
|
||||||
|
```
|
||||||
|
|
||||||
## Available Middlewares
|
## Available Middlewares
|
||||||
|
|
||||||
A list of HTTP middlewares can be found [here](http/overview.md).
|
A list of HTTP middlewares can be found [here](http/overview.md).
|
||||||
|
|
|
@ -139,27 +139,6 @@ Then any router can refer to an instance of the wanted middleware.
|
||||||
namespace: foo
|
namespace: foo
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.router0]
|
|
||||||
rule = "Host(`test.localhost`) && PathPrefix(`/test`)"
|
|
||||||
middlewares = ["auth"]
|
|
||||||
service = "my-service"
|
|
||||||
|
|
||||||
[http.services]
|
|
||||||
[[http.services.my-service.loadBalancer.servers]]
|
|
||||||
url = "http://10.10.10.1:80"
|
|
||||||
[[http.services.my-service.loadBalancer.servers]]
|
|
||||||
url = "http://10.10.10.2:80"
|
|
||||||
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.auth.basicAuth]
|
|
||||||
users = [
|
|
||||||
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
|
||||||
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
routers:
|
routers:
|
||||||
|
@ -184,6 +163,27 @@ Then any router can refer to an instance of the wanted middleware.
|
||||||
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
|
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.router0]
|
||||||
|
rule = "Host(`test.localhost`) && PathPrefix(`/test`)"
|
||||||
|
middlewares = ["auth"]
|
||||||
|
service = "my-service"
|
||||||
|
|
||||||
|
[http.services]
|
||||||
|
[[http.services.my-service.loadBalancer.servers]]
|
||||||
|
url = "http://10.10.10.1:80"
|
||||||
|
[[http.services.my-service.loadBalancer.servers]]
|
||||||
|
url = "http://10.10.10.2:80"
|
||||||
|
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.auth.basicAuth]
|
||||||
|
users = [
|
||||||
|
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
||||||
|
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
## TLS Configuration is Now Dynamic, per Router.
|
## TLS Configuration is Now Dynamic, per Router.
|
||||||
|
|
||||||
TLS parameters used to be specified in the static configuration, as an entryPoint field.
|
TLS parameters used to be specified in the static configuration, as an entryPoint field.
|
||||||
|
@ -221,6 +221,31 @@ Then, a [router's TLS field](../routing/routers/index.md#tls) can refer to one o
|
||||||
|
|
||||||
!!! info "v2"
|
!!! info "v2"
|
||||||
|
|
||||||
|
```yaml tab="File (YAML)"
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
Router-1:
|
||||||
|
rule: "Host(`example.com`)"
|
||||||
|
service: service-id
|
||||||
|
# will terminate the TLS request
|
||||||
|
tls:
|
||||||
|
options: myTLSOptions
|
||||||
|
|
||||||
|
tls:
|
||||||
|
certificates:
|
||||||
|
- certFile: /path/to/domain.cert
|
||||||
|
keyFile: /path/to/domain.key
|
||||||
|
options:
|
||||||
|
myTLSOptions:
|
||||||
|
minVersion: VersionTLS12
|
||||||
|
cipherSuites:
|
||||||
|
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
|
||||||
|
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
|
||||||
|
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
|
||||||
|
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
|
||||||
|
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
||||||
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
# dynamic configuration
|
# dynamic configuration
|
||||||
[http.routers]
|
[http.routers]
|
||||||
|
@ -248,31 +273,6 @@ Then, a [router's TLS field](../routing/routers/index.md#tls) can refer to one o
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
|
||||||
http:
|
|
||||||
routers:
|
|
||||||
Router-1:
|
|
||||||
rule: "Host(`example.com`)"
|
|
||||||
service: service-id
|
|
||||||
# will terminate the TLS request
|
|
||||||
tls:
|
|
||||||
options: myTLSOptions
|
|
||||||
|
|
||||||
tls:
|
|
||||||
certificates:
|
|
||||||
- certFile: /path/to/domain.cert
|
|
||||||
keyFile: /path/to/domain.key
|
|
||||||
options:
|
|
||||||
myTLSOptions:
|
|
||||||
minVersion: VersionTLS12
|
|
||||||
cipherSuites:
|
|
||||||
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
|
|
||||||
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
|
|
||||||
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
|
|
||||||
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
|
|
||||||
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="K8s IngressRoute"
|
```yaml tab="K8s IngressRoute"
|
||||||
# The definitions below require the definitions for the TLSOption and IngressRoute kinds.
|
# The definitions below require the definitions for the TLSOption and IngressRoute kinds.
|
||||||
# https://doc.traefik.io/traefik/v2.3/reference/dynamic-configuration/kubernetes-crd/#definitions
|
# https://doc.traefik.io/traefik/v2.3/reference/dynamic-configuration/kubernetes-crd/#definitions
|
||||||
|
@ -355,14 +355,21 @@ To apply a redirection:
|
||||||
|
|
||||||
!!! info "v2"
|
!!! info "v2"
|
||||||
|
|
||||||
```bash tab="CLI"
|
```yaml tab="File (YAML)"
|
||||||
|
# traefik.yml
|
||||||
## static configuration
|
## static configuration
|
||||||
|
|
||||||
--entrypoints.web.address=:80
|
entryPoints:
|
||||||
--entrypoints.web.http.redirections.entrypoint.to=websecure
|
web:
|
||||||
--entrypoints.web.http.redirections.entrypoint.scheme=https
|
address: ":80"
|
||||||
--entrypoints.websecure.address=:443
|
http:
|
||||||
--providers.docker=true
|
redirections:
|
||||||
|
entrypoint:
|
||||||
|
to: websecure
|
||||||
|
scheme: https
|
||||||
|
|
||||||
|
websecure:
|
||||||
|
address: ":443"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
|
@ -379,21 +386,14 @@ To apply a redirection:
|
||||||
address = ":443"
|
address = ":443"
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```bash tab="CLI"
|
||||||
# traefik.yaml
|
|
||||||
## static configuration
|
## static configuration
|
||||||
|
|
||||||
entryPoints:
|
--entrypoints.web.address=:80
|
||||||
web:
|
--entrypoints.web.http.redirections.entrypoint.to=websecure
|
||||||
address: ":80"
|
--entrypoints.web.http.redirections.entrypoint.scheme=https
|
||||||
http:
|
--entrypoints.websecure.address=:443
|
||||||
redirections:
|
--providers.docker=true
|
||||||
entrypoint:
|
|
||||||
to: websecure
|
|
||||||
scheme: https
|
|
||||||
|
|
||||||
websecure:
|
|
||||||
address: ":443"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! example "HTTP to HTTPS redirection per domain"
|
!!! example "HTTP to HTTPS redirection per domain"
|
||||||
|
@ -483,29 +483,6 @@ To apply a redirection:
|
||||||
permanent: true
|
permanent: true
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## dynamic configuration
|
|
||||||
# dynamic-conf.toml
|
|
||||||
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.router0]
|
|
||||||
rule = "Host(`example.net`)"
|
|
||||||
service = "my-service"
|
|
||||||
entrypoints = ["web"]
|
|
||||||
middlewares = ["https_redirect"]
|
|
||||||
|
|
||||||
[http.routers.router1]
|
|
||||||
rule = "Host(`example.net`)"
|
|
||||||
service = "my-service"
|
|
||||||
entrypoints = ["websecure"]
|
|
||||||
[http.routers.router1.tls]
|
|
||||||
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.https_redirect.redirectScheme]
|
|
||||||
scheme = "https"
|
|
||||||
permanent = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## dynamic configuration
|
## dynamic configuration
|
||||||
# dynamic-conf.yml
|
# dynamic-conf.yml
|
||||||
|
@ -534,6 +511,29 @@ To apply a redirection:
|
||||||
permanent: true
|
permanent: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## dynamic configuration
|
||||||
|
# dynamic-conf.toml
|
||||||
|
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.router0]
|
||||||
|
rule = "Host(`example.net`)"
|
||||||
|
service = "my-service"
|
||||||
|
entrypoints = ["web"]
|
||||||
|
middlewares = ["https_redirect"]
|
||||||
|
|
||||||
|
[http.routers.router1]
|
||||||
|
rule = "Host(`example.net`)"
|
||||||
|
service = "my-service"
|
||||||
|
entrypoints = ["websecure"]
|
||||||
|
[http.routers.router1.tls]
|
||||||
|
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.https_redirect.redirectScheme]
|
||||||
|
scheme = "https"
|
||||||
|
permanent = true
|
||||||
|
```
|
||||||
|
|
||||||
## Strip and Rewrite Path Prefixes
|
## Strip and Rewrite Path Prefixes
|
||||||
|
|
||||||
With the new core notions of v2 (introduced earlier in the section
|
With the new core notions of v2 (introduced earlier in the section
|
||||||
|
@ -619,23 +619,6 @@ with the path `/admin` stripped, e.g. to `http://<IP>:<port>/`. In this case, yo
|
||||||
- /admin
|
- /admin
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
# dynamic-conf.toml
|
|
||||||
|
|
||||||
[http.routers.router1]
|
|
||||||
rule = "Host(`example.org`) && PathPrefix(`/admin`)"
|
|
||||||
service = "admin-svc"
|
|
||||||
entrypoints = ["web"]
|
|
||||||
middlewares = ["admin-stripprefix"]
|
|
||||||
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.admin-stripprefix.stripPrefix]
|
|
||||||
prefixes = ["/admin"]
|
|
||||||
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic Configuration
|
## Dynamic Configuration
|
||||||
# dynamic-conf.yml
|
# dynamic-conf.yml
|
||||||
|
@ -658,6 +641,23 @@ with the path `/admin` stripped, e.g. to `http://<IP>:<port>/`. In this case, yo
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
# dynamic-conf.toml
|
||||||
|
|
||||||
|
[http.routers.router1]
|
||||||
|
rule = "Host(`example.org`) && PathPrefix(`/admin`)"
|
||||||
|
service = "admin-svc"
|
||||||
|
entrypoints = ["web"]
|
||||||
|
middlewares = ["admin-stripprefix"]
|
||||||
|
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.admin-stripprefix.stripPrefix]
|
||||||
|
prefixes = ["/admin"]
|
||||||
|
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
??? question "What About Other Path Transformations?"
|
??? question "What About Other Path Transformations?"
|
||||||
|
|
||||||
Instead of removing the path prefix with the [`stripprefix` middleware](../../middlewares/http/stripprefix/), you can also:
|
Instead of removing the path prefix with the [`stripprefix` middleware](../../middlewares/http/stripprefix/), you can also:
|
||||||
|
@ -708,23 +708,6 @@ with the path `/admin` stripped, e.g. to `http://<IP>:<port>/`. In this case, yo
|
||||||
|
|
||||||
!!! info "v2"
|
!!! info "v2"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
[entryPoints.websecure.http.tls]
|
|
||||||
certResolver = "myresolver"
|
|
||||||
|
|
||||||
[certificatesResolvers.myresolver.acme]
|
|
||||||
email = "your-email@example.com"
|
|
||||||
storage = "acme.json"
|
|
||||||
[certificatesResolvers.myresolver.acme.tlsChallenge]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
web:
|
web:
|
||||||
|
@ -744,6 +727,23 @@ with the path `/admin` stripped, e.g. to `http://<IP>:<port>/`. In this case, yo
|
||||||
tlsChallenge: {}
|
tlsChallenge: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
[entryPoints.websecure.http.tls]
|
||||||
|
certResolver = "myresolver"
|
||||||
|
|
||||||
|
[certificatesResolvers.myresolver.acme]
|
||||||
|
email = "your-email@example.com"
|
||||||
|
storage = "acme.json"
|
||||||
|
[certificatesResolvers.myresolver.acme.tlsChallenge]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.web.address=:80
|
--entrypoints.web.address=:80
|
||||||
--entrypoints.websecure.address=:443
|
--entrypoints.websecure.address=:443
|
||||||
|
@ -778,14 +778,6 @@ There is no more log configuration at the root level.
|
||||||
|
|
||||||
!!! info "v2"
|
!!! info "v2"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# static configuration
|
|
||||||
[log]
|
|
||||||
level = "DEBUG"
|
|
||||||
filePath = "/path/to/log-file.log"
|
|
||||||
format = "json"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# static configuration
|
# static configuration
|
||||||
log:
|
log:
|
||||||
|
@ -794,6 +786,14 @@ There is no more log configuration at the root level.
|
||||||
format: json
|
format: json
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# static configuration
|
||||||
|
[log]
|
||||||
|
level = "DEBUG"
|
||||||
|
filePath = "/path/to/log-file.log"
|
||||||
|
format = "json"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--log.level=DEBUG
|
--log.level=DEBUG
|
||||||
--log.filePath=/path/to/traefik.log
|
--log.filePath=/path/to/traefik.log
|
||||||
|
@ -838,17 +838,6 @@ Traefik v2 retains OpenTracing support. The `backend` root option from the v1 is
|
||||||
|
|
||||||
!!! info "v2"
|
!!! info "v2"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# static configuration
|
|
||||||
[tracing]
|
|
||||||
servicename = "tracing"
|
|
||||||
[tracing.jaeger]
|
|
||||||
samplingParam = 1.0
|
|
||||||
samplingServerURL = "http://12.0.0.1:5778/sampling"
|
|
||||||
samplingType = "const"
|
|
||||||
localAgentHostPort = "12.0.0.1:6831"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# static configuration
|
# static configuration
|
||||||
tracing:
|
tracing:
|
||||||
|
@ -860,6 +849,17 @@ Traefik v2 retains OpenTracing support. The `backend` root option from the v1 is
|
||||||
localAgentHostPort: '12.0.0.1:6831'
|
localAgentHostPort: '12.0.0.1:6831'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# static configuration
|
||||||
|
[tracing]
|
||||||
|
servicename = "tracing"
|
||||||
|
[tracing.jaeger]
|
||||||
|
samplingParam = 1.0
|
||||||
|
samplingServerURL = "http://12.0.0.1:5778/sampling"
|
||||||
|
samplingType = "const"
|
||||||
|
localAgentHostPort = "12.0.0.1:6831"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.servicename=tracing
|
--tracing.servicename=tracing
|
||||||
--tracing.jaeger.localagenthostport=12.0.0.1:6831
|
--tracing.jaeger.localagenthostport=12.0.0.1:6831
|
||||||
|
@ -891,13 +891,6 @@ For a basic configuration, the [metrics configuration](../observability/metrics/
|
||||||
|
|
||||||
!!! info "v2"
|
!!! info "v2"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# static configuration
|
|
||||||
[metrics.prometheus]
|
|
||||||
buckets = [0.1,0.3,1.2,5.0]
|
|
||||||
entryPoint = "metrics"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# static configuration
|
# static configuration
|
||||||
metrics:
|
metrics:
|
||||||
|
@ -910,6 +903,13 @@ For a basic configuration, the [metrics configuration](../observability/metrics/
|
||||||
entryPoint: metrics
|
entryPoint: metrics
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# static configuration
|
||||||
|
[metrics.prometheus]
|
||||||
|
buckets = [0.1,0.3,1.2,5.0]
|
||||||
|
entryPoint = "metrics"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.prometheus.buckets=[0.1,0.3,1.2,5.0]
|
--metrics.prometheus.buckets=[0.1,0.3,1.2,5.0]
|
||||||
--metrics.prometheus.entrypoint=metrics
|
--metrics.prometheus.entrypoint=metrics
|
||||||
|
@ -955,24 +955,6 @@ Each root item has been moved to a related section or removed.
|
||||||
|
|
||||||
!!! info "v2"
|
!!! info "v2"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# static configuration
|
|
||||||
[global]
|
|
||||||
checkNewVersion = true
|
|
||||||
sendAnonymousUsage = true
|
|
||||||
|
|
||||||
[log]
|
|
||||||
level = "DEBUG"
|
|
||||||
|
|
||||||
[serversTransport]
|
|
||||||
insecureSkipVerify = true
|
|
||||||
rootCAs = [ "/mycert.cert" ]
|
|
||||||
maxIdleConnsPerHost = 42
|
|
||||||
|
|
||||||
[providers]
|
|
||||||
providersThrottleDuration = 42
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# static configuration
|
# static configuration
|
||||||
global:
|
global:
|
||||||
|
@ -992,6 +974,24 @@ Each root item has been moved to a related section or removed.
|
||||||
providersThrottleDuration: 42
|
providersThrottleDuration: 42
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# static configuration
|
||||||
|
[global]
|
||||||
|
checkNewVersion = true
|
||||||
|
sendAnonymousUsage = true
|
||||||
|
|
||||||
|
[log]
|
||||||
|
level = "DEBUG"
|
||||||
|
|
||||||
|
[serversTransport]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
rootCAs = [ "/mycert.cert" ]
|
||||||
|
maxIdleConnsPerHost = 42
|
||||||
|
|
||||||
|
[providers]
|
||||||
|
providersThrottleDuration = 42
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--global.checknewversion=true
|
--global.checknewversion=true
|
||||||
--global.sendanonymoususage=true
|
--global.sendanonymoususage=true
|
||||||
|
@ -1050,6 +1050,43 @@ To activate the dashboard, you can either:
|
||||||
- "traefik.http.middlewares.myAuth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/"
|
- "traefik.http.middlewares.myAuth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```yaml tab="File (YAML)"
|
||||||
|
## static configuration
|
||||||
|
# traefik.yml
|
||||||
|
|
||||||
|
entryPoints:
|
||||||
|
websecure:
|
||||||
|
address: ':443'
|
||||||
|
|
||||||
|
api: {}
|
||||||
|
|
||||||
|
providers:
|
||||||
|
file:
|
||||||
|
directory: /path/to/dynamic/config
|
||||||
|
|
||||||
|
##---------------------##
|
||||||
|
|
||||||
|
## dynamic configuration
|
||||||
|
# /path/to/dynamic/config/dynamic-conf.yml
|
||||||
|
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
api:
|
||||||
|
rule: Host(`traefik.docker.localhost`)
|
||||||
|
entrypoints:
|
||||||
|
- websecure
|
||||||
|
service: api@internal
|
||||||
|
middlewares:
|
||||||
|
- myAuth
|
||||||
|
tls: {}
|
||||||
|
|
||||||
|
middlewares:
|
||||||
|
myAuth:
|
||||||
|
basicAuth:
|
||||||
|
users:
|
||||||
|
- 'test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/'
|
||||||
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## static configuration
|
## static configuration
|
||||||
# traefik.toml
|
# traefik.toml
|
||||||
|
@ -1080,43 +1117,6 @@ To activate the dashboard, you can either:
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
|
||||||
## static configuration
|
|
||||||
# traefik.yaml
|
|
||||||
|
|
||||||
entryPoints:
|
|
||||||
websecure:
|
|
||||||
address: ':443'
|
|
||||||
|
|
||||||
api: {}
|
|
||||||
|
|
||||||
providers:
|
|
||||||
file:
|
|
||||||
directory: /path/to/dynamic/config
|
|
||||||
|
|
||||||
##---------------------##
|
|
||||||
|
|
||||||
## dynamic configuration
|
|
||||||
# /path/to/dynamic/config/dynamic-conf.yaml
|
|
||||||
|
|
||||||
http:
|
|
||||||
routers:
|
|
||||||
api:
|
|
||||||
rule: Host(`traefik.docker.localhost`)
|
|
||||||
entrypoints:
|
|
||||||
- websecure
|
|
||||||
service: api@internal
|
|
||||||
middlewares:
|
|
||||||
- myAuth
|
|
||||||
tls: {}
|
|
||||||
|
|
||||||
middlewares:
|
|
||||||
myAuth:
|
|
||||||
basicAuth:
|
|
||||||
users:
|
|
||||||
- 'test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/'
|
|
||||||
```
|
|
||||||
|
|
||||||
## Providers
|
## Providers
|
||||||
|
|
||||||
Supported [providers](../providers/overview.md), for now:
|
Supported [providers](../providers/overview.md), for now:
|
||||||
|
|
|
@ -9,14 +9,14 @@ By default, logs are written to stdout, in text format.
|
||||||
|
|
||||||
To enable the access logs:
|
To enable the access logs:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[accessLog]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
accessLog: {}
|
accessLog: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[accessLog]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--accesslog=true
|
--accesslog=true
|
||||||
```
|
```
|
||||||
|
@ -26,16 +26,16 @@ accessLog: {}
|
||||||
By default access logs are written to the standard output.
|
By default access logs are written to the standard output.
|
||||||
To write the logs into a log file, use the `filePath` option.
|
To write the logs into a log file, use the `filePath` option.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[accessLog]
|
|
||||||
filePath = "/path/to/access.log"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
accessLog:
|
accessLog:
|
||||||
filePath: "/path/to/access.log"
|
filePath: "/path/to/access.log"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[accessLog]
|
||||||
|
filePath = "/path/to/access.log"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--accesslog.filepath=/path/to/access.log
|
--accesslog.filepath=/path/to/access.log
|
||||||
```
|
```
|
||||||
|
@ -58,13 +58,6 @@ 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)"
|
|
||||||
# Configuring a buffer of 100 lines
|
|
||||||
[accessLog]
|
|
||||||
filePath = "/path/to/access.log"
|
|
||||||
bufferingSize = 100
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Configuring a buffer of 100 lines
|
# Configuring a buffer of 100 lines
|
||||||
accessLog:
|
accessLog:
|
||||||
|
@ -72,6 +65,13 @@ accessLog:
|
||||||
bufferingSize: 100
|
bufferingSize: 100
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# 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.filepath=/path/to/access.log
|
--accesslog.filepath=/path/to/access.log
|
||||||
|
@ -89,18 +89,6 @@ 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 (provided in seconds or as a valid duration format, see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration))
|
- `minDuration`, to keep access logs when requests take longer than the specified duration (provided in seconds or as a valid duration format, see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration))
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Configuring Multiple Filters
|
|
||||||
[accessLog]
|
|
||||||
filePath = "/path/to/access.log"
|
|
||||||
format = "json"
|
|
||||||
|
|
||||||
[accessLog.filters]
|
|
||||||
statusCodes = ["200", "300-302"]
|
|
||||||
retryAttempts = true
|
|
||||||
minDuration = "10ms"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Configuring Multiple Filters
|
# Configuring Multiple Filters
|
||||||
accessLog:
|
accessLog:
|
||||||
|
@ -114,6 +102,18 @@ accessLog:
|
||||||
minDuration: "10ms"
|
minDuration: "10ms"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Configuring Multiple Filters
|
||||||
|
[accessLog]
|
||||||
|
filePath = "/path/to/access.log"
|
||||||
|
format = "json"
|
||||||
|
|
||||||
|
[accessLog.filters]
|
||||||
|
statusCodes = ["200", "300-302"]
|
||||||
|
retryAttempts = true
|
||||||
|
minDuration = "10ms"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# Configuring Multiple Filters
|
# Configuring Multiple Filters
|
||||||
--accesslog.filepath=/path/to/access.log
|
--accesslog.filepath=/path/to/access.log
|
||||||
|
@ -135,27 +135,9 @@ Each field can be set to:
|
||||||
|
|
||||||
The `defaultMode` for `fields.headers` is `drop`.
|
The `defaultMode` for `fields.headers` is `drop`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Limiting the Logs to Specific Fields
|
|
||||||
[accessLog]
|
|
||||||
filePath = "/path/to/access.log"
|
|
||||||
format = "json"
|
|
||||||
|
|
||||||
[accessLog.fields]
|
[accessLog.fields]
|
||||||
defaultMode = "keep"
|
defaultMode = "keep"
|
||||||
|
|
||||||
[accessLog.fields.names]
|
|
||||||
"ClientUsername" = "drop"
|
|
||||||
|
|
||||||
[accessLog.fields.headers]
|
|
||||||
defaultMode = "keep"
|
|
||||||
|
|
||||||
[accessLog.fields.headers.names]
|
|
||||||
"User-Agent" = "redact"
|
|
||||||
"Authorization" = "drop"
|
|
||||||
"Content-Type" = "keep"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Limiting the Logs to Specific Fields
|
# Limiting the Logs to Specific Fields
|
||||||
accessLog:
|
accessLog:
|
||||||
|
@ -173,6 +155,24 @@ accessLog:
|
||||||
Content-Type: keep
|
Content-Type: keep
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Limiting the Logs to Specific Fields
|
||||||
|
[accessLog]
|
||||||
|
filePath = "/path/to/access.log"
|
||||||
|
format = "json"
|
||||||
|
|
||||||
|
[accessLog.fields.names]
|
||||||
|
"ClientUsername" = "drop"
|
||||||
|
|
||||||
|
[accessLog.fields.headers]
|
||||||
|
defaultMode = "keep"
|
||||||
|
|
||||||
|
[accessLog.fields.headers.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.filepath=/path/to/access.log
|
--accesslog.filepath=/path/to/access.log
|
||||||
|
|
|
@ -16,18 +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)"
|
|
||||||
# Writing Logs to a File
|
|
||||||
[log]
|
|
||||||
filePath = "/path/to/traefik.log"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Writing Logs to a File
|
# Writing Logs to a File
|
||||||
log:
|
log:
|
||||||
filePath: "/path/to/traefik.log"
|
filePath: "/path/to/traefik.log"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# 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
|
||||||
|
@ -37,13 +37,6 @@ log:
|
||||||
|
|
||||||
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)"
|
|
||||||
# Writing Logs to a File, in JSON
|
|
||||||
[log]
|
|
||||||
filePath = "/path/to/log-file.log"
|
|
||||||
format = "json"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Writing Logs to a File, in JSON
|
# Writing Logs to a File, in JSON
|
||||||
log:
|
log:
|
||||||
|
@ -51,6 +44,13 @@ log:
|
||||||
format: json
|
format: json
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Writing Logs to a File, in JSON
|
||||||
|
[log]
|
||||||
|
filePath = "/path/to/log-file.log"
|
||||||
|
format = "json"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# Writing Logs to a File, in JSON
|
# Writing Logs to a File, in JSON
|
||||||
--log.filePath=/path/to/traefik.log
|
--log.filePath=/path/to/traefik.log
|
||||||
|
@ -61,16 +61,16 @@ log:
|
||||||
|
|
||||||
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)"
|
|
||||||
[log]
|
|
||||||
level = "DEBUG"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
log:
|
log:
|
||||||
level: DEBUG
|
level: DEBUG
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[log]
|
||||||
|
level = "DEBUG"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--log.level=DEBUG
|
--log.level=DEBUG
|
||||||
```
|
```
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
To enable the Datadog:
|
To enable the Datadog:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.datadog]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
datadog: {}
|
datadog: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.datadog]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.datadog=true
|
--metrics.datadog=true
|
||||||
```
|
```
|
||||||
|
@ -22,18 +22,18 @@ _Required, Default="127.0.0.1:8125"_
|
||||||
|
|
||||||
Address instructs exporter to send metrics to datadog-agent at this address.
|
Address instructs exporter to send metrics to datadog-agent at this address.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.datadog]
|
|
||||||
address = "127.0.0.1:8125"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
datadog:
|
datadog:
|
||||||
address: 127.0.0.1:8125
|
address: 127.0.0.1:8125
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.datadog]
|
||||||
|
address = "127.0.0.1:8125"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.datadog.address=127.0.0.1:8125
|
--metrics.datadog.address=127.0.0.1:8125
|
||||||
```
|
```
|
||||||
|
@ -44,18 +44,18 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Enable metrics on entry points.
|
Enable metrics on entry points.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.datadog]
|
|
||||||
addEntryPointsLabels = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
datadog:
|
datadog:
|
||||||
addEntryPointsLabels: true
|
addEntryPointsLabels: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.datadog]
|
||||||
|
addEntryPointsLabels = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.datadog.addEntryPointsLabels=true
|
--metrics.datadog.addEntryPointsLabels=true
|
||||||
```
|
```
|
||||||
|
@ -87,18 +87,18 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Enable metrics on services.
|
Enable metrics on services.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.datadog]
|
|
||||||
addServicesLabels = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
datadog:
|
datadog:
|
||||||
addServicesLabels: true
|
addServicesLabels: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.datadog]
|
||||||
|
addServicesLabels = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.datadog.addServicesLabels=true
|
--metrics.datadog.addServicesLabels=true
|
||||||
```
|
```
|
||||||
|
@ -109,18 +109,18 @@ _Optional, Default=10s_
|
||||||
|
|
||||||
The interval used by the exporter to push metrics to datadog-agent.
|
The interval used by the exporter to push metrics to datadog-agent.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.datadog]
|
|
||||||
pushInterval = 10s
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
datadog:
|
datadog:
|
||||||
pushInterval: 10s
|
pushInterval: 10s
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.datadog]
|
||||||
|
pushInterval = 10s
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.datadog.pushInterval=10s
|
--metrics.datadog.pushInterval=10s
|
||||||
```
|
```
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
To enable the InfluxDB:
|
To enable the InfluxDB:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.influxDB]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
influxDB: {}
|
influxDB: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.influxDB]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.influxdb=true
|
--metrics.influxdb=true
|
||||||
```
|
```
|
||||||
|
@ -22,18 +22,18 @@ _Required, Default="localhost:8089"_
|
||||||
|
|
||||||
Address instructs exporter to send metrics to influxdb at this address.
|
Address instructs exporter to send metrics to influxdb at this address.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.influxDB]
|
|
||||||
address = "localhost:8089"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
influxDB:
|
influxDB:
|
||||||
address: localhost:8089
|
address: localhost:8089
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.influxDB]
|
||||||
|
address = "localhost:8089"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.influxdb.address=localhost:8089
|
--metrics.influxdb.address=localhost:8089
|
||||||
```
|
```
|
||||||
|
@ -44,18 +44,18 @@ _Required, Default="udp"_
|
||||||
|
|
||||||
InfluxDB's address protocol (udp or http).
|
InfluxDB's address protocol (udp or http).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.influxDB]
|
|
||||||
protocol = "udp"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
influxDB:
|
influxDB:
|
||||||
protocol: udp
|
protocol: udp
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.influxDB]
|
||||||
|
protocol = "udp"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.influxdb.protocol=udp
|
--metrics.influxdb.protocol=udp
|
||||||
```
|
```
|
||||||
|
@ -66,18 +66,18 @@ _Optional, Default=""_
|
||||||
|
|
||||||
InfluxDB database used when protocol is http.
|
InfluxDB database used when protocol is http.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.influxDB]
|
|
||||||
database = "db"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
influxDB:
|
influxDB:
|
||||||
database: "db"
|
database: "db"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.influxDB]
|
||||||
|
database = "db"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.influxdb.database=db
|
--metrics.influxdb.database=db
|
||||||
```
|
```
|
||||||
|
@ -88,18 +88,18 @@ _Optional, Default=""_
|
||||||
|
|
||||||
InfluxDB retention policy used when protocol is http.
|
InfluxDB retention policy used when protocol is http.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.influxDB]
|
|
||||||
retentionPolicy = "two_hours"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
influxDB:
|
influxDB:
|
||||||
retentionPolicy: "two_hours"
|
retentionPolicy: "two_hours"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.influxDB]
|
||||||
|
retentionPolicy = "two_hours"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.influxdb.retentionPolicy=two_hours
|
--metrics.influxdb.retentionPolicy=two_hours
|
||||||
```
|
```
|
||||||
|
@ -110,18 +110,18 @@ _Optional, Default=""_
|
||||||
|
|
||||||
InfluxDB username (only with http).
|
InfluxDB username (only with http).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.influxDB]
|
|
||||||
username = "john"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
influxDB:
|
influxDB:
|
||||||
username: "john"
|
username: "john"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.influxDB]
|
||||||
|
username = "john"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.influxdb.username=john
|
--metrics.influxdb.username=john
|
||||||
```
|
```
|
||||||
|
@ -132,18 +132,18 @@ _Optional, Default=""_
|
||||||
|
|
||||||
InfluxDB password (only with http).
|
InfluxDB password (only with http).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.influxDB]
|
|
||||||
password = "secret"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
influxDB:
|
influxDB:
|
||||||
password: "secret"
|
password: "secret"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.influxDB]
|
||||||
|
password = "secret"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.influxdb.password=secret
|
--metrics.influxdb.password=secret
|
||||||
```
|
```
|
||||||
|
@ -154,18 +154,18 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Enable metrics on entry points.
|
Enable metrics on entry points.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.influxDB]
|
|
||||||
addEntryPointsLabels = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
influxDB:
|
influxDB:
|
||||||
addEntryPointsLabels: true
|
addEntryPointsLabels: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.influxDB]
|
||||||
|
addEntryPointsLabels = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.influxdb.addEntryPointsLabels=true
|
--metrics.influxdb.addEntryPointsLabels=true
|
||||||
```
|
```
|
||||||
|
@ -198,18 +198,18 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Enable metrics on services.
|
Enable metrics on services.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.influxDB]
|
|
||||||
addServicesLabels = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
influxDB:
|
influxDB:
|
||||||
addServicesLabels: true
|
addServicesLabels: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.influxDB]
|
||||||
|
addServicesLabels = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.influxdb.addServicesLabels=true
|
--metrics.influxdb.addServicesLabels=true
|
||||||
```
|
```
|
||||||
|
@ -220,18 +220,18 @@ _Optional, Default=10s_
|
||||||
|
|
||||||
The interval used by the exporter to push metrics to influxdb.
|
The interval used by the exporter to push metrics to influxdb.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.influxDB]
|
|
||||||
pushInterval = 10s
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
influxDB:
|
influxDB:
|
||||||
pushInterval: 10s
|
pushInterval: 10s
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.influxDB]
|
||||||
|
pushInterval = 10s
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.influxdb.pushInterval=10s
|
--metrics.influxdb.pushInterval=10s
|
||||||
```
|
```
|
||||||
|
|
|
@ -11,14 +11,14 @@ Traefik supports 4 metrics backends:
|
||||||
|
|
||||||
To enable metrics:
|
To enable metrics:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics: {}
|
metrics: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics=true
|
--metrics=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
To enable the Prometheus:
|
To enable the Prometheus:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.prometheus]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
prometheus: {}
|
prometheus: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.prometheus]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.prometheus=true
|
--metrics.prometheus=true
|
||||||
```
|
```
|
||||||
|
@ -22,12 +22,6 @@ _Optional, Default="0.100000, 0.300000, 1.200000, 5.000000"_
|
||||||
|
|
||||||
Buckets for latency metrics.
|
Buckets for latency metrics.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.prometheus]
|
|
||||||
buckets = [0.1,0.3,1.2,5.0]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
prometheus:
|
prometheus:
|
||||||
|
@ -38,6 +32,12 @@ metrics:
|
||||||
- 5.0
|
- 5.0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.prometheus]
|
||||||
|
buckets = [0.1,0.3,1.2,5.0]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.prometheus.buckets=0.100000, 0.300000, 1.200000, 5.000000
|
--metrics.prometheus.buckets=0.100000, 0.300000, 1.200000, 5.000000
|
||||||
```
|
```
|
||||||
|
@ -48,18 +48,18 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Enable metrics on entry points.
|
Enable metrics on entry points.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.prometheus]
|
|
||||||
addEntryPointsLabels = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
prometheus:
|
prometheus:
|
||||||
addEntryPointsLabels: true
|
addEntryPointsLabels: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.prometheus]
|
||||||
|
addEntryPointsLabels = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.prometheus.addEntryPointsLabels=true
|
--metrics.prometheus.addEntryPointsLabels=true
|
||||||
```
|
```
|
||||||
|
@ -92,18 +92,18 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Enable metrics on services.
|
Enable metrics on services.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.prometheus]
|
|
||||||
addServicesLabels = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
prometheus:
|
prometheus:
|
||||||
addServicesLabels: true
|
addServicesLabels: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.prometheus]
|
||||||
|
addServicesLabels = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.prometheus.addServicesLabels=true
|
--metrics.prometheus.addServicesLabels=true
|
||||||
```
|
```
|
||||||
|
@ -114,16 +114,6 @@ _Optional, Default=traefik_
|
||||||
|
|
||||||
Entry point used to expose metrics.
|
Entry point used to expose metrics.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.metrics]
|
|
||||||
address = ":8082"
|
|
||||||
|
|
||||||
[metrics]
|
|
||||||
[metrics.prometheus]
|
|
||||||
entryPoint = "metrics"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
metrics:
|
metrics:
|
||||||
|
@ -134,6 +124,16 @@ metrics:
|
||||||
entryPoint: metrics
|
entryPoint: metrics
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.metrics]
|
||||||
|
address = ":8082"
|
||||||
|
|
||||||
|
[metrics]
|
||||||
|
[metrics.prometheus]
|
||||||
|
entryPoint = "metrics"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entryPoints.metrics.address=:8082
|
--entryPoints.metrics.address=:8082
|
||||||
--metrics.prometheus.entryPoint=metrics
|
--metrics.prometheus.entryPoint=metrics
|
||||||
|
@ -145,18 +145,18 @@ _Optional, Default=false_
|
||||||
|
|
||||||
If `manualRouting` is `true`, it disables the default internal router in order to allow one to create a custom router for the `prometheus@internal` service.
|
If `manualRouting` is `true`, it disables the default internal router in order to allow one to create a custom router for the `prometheus@internal` service.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.prometheus]
|
|
||||||
manualRouting = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
prometheus:
|
prometheus:
|
||||||
manualRouting: true
|
manualRouting: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.prometheus]
|
||||||
|
manualRouting = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.prometheus.manualrouting=true
|
--metrics.prometheus.manualrouting=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
To enable the Statsd:
|
To enable the Statsd:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.statsD]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
statsD: {}
|
statsD: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.statsD]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.statsd=true
|
--metrics.statsd=true
|
||||||
```
|
```
|
||||||
|
@ -22,18 +22,18 @@ _Required, Default="localhost:8125"_
|
||||||
|
|
||||||
Address instructs exporter to send metrics to statsd at this address.
|
Address instructs exporter to send metrics to statsd at this address.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.statsD]
|
|
||||||
address = "localhost:8125"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
statsD:
|
statsD:
|
||||||
address: localhost:8125
|
address: localhost:8125
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.statsD]
|
||||||
|
address = "localhost:8125"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.statsd.address=localhost:8125
|
--metrics.statsd.address=localhost:8125
|
||||||
```
|
```
|
||||||
|
@ -44,18 +44,18 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Enable metrics on entry points.
|
Enable metrics on entry points.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.statsD]
|
|
||||||
addEntryPointsLabels = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
statsD:
|
statsD:
|
||||||
addEntryPointsLabels: true
|
addEntryPointsLabels: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.statsD]
|
||||||
|
addEntryPointsLabels = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.statsd.addEntryPointsLabels=true
|
--metrics.statsd.addEntryPointsLabels=true
|
||||||
```
|
```
|
||||||
|
@ -88,18 +88,18 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Enable metrics on services.
|
Enable metrics on services.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.statsD]
|
|
||||||
addServicesLabels = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
statsD:
|
statsD:
|
||||||
addServicesLabels: true
|
addServicesLabels: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.statsD]
|
||||||
|
addServicesLabels = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.statsd.addServicesLabels=true
|
--metrics.statsd.addServicesLabels=true
|
||||||
```
|
```
|
||||||
|
@ -110,18 +110,18 @@ _Optional, Default=10s_
|
||||||
|
|
||||||
The interval used by the exporter to push metrics to statsD.
|
The interval used by the exporter to push metrics to statsD.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.statsD]
|
|
||||||
pushInterval = 10s
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
statsD:
|
statsD:
|
||||||
pushInterval: 10s
|
pushInterval: 10s
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.statsD]
|
||||||
|
pushInterval = 10s
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.statsd.pushInterval=10s
|
--metrics.statsd.pushInterval=10s
|
||||||
```
|
```
|
||||||
|
@ -132,18 +132,18 @@ _Optional, Default="traefik"_
|
||||||
|
|
||||||
The prefix to use for metrics collection.
|
The prefix to use for metrics collection.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[metrics]
|
|
||||||
[metrics.statsD]
|
|
||||||
prefix = "traefik"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
metrics:
|
metrics:
|
||||||
statsD:
|
statsD:
|
||||||
prefix: traefik
|
prefix: traefik
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[metrics]
|
||||||
|
[metrics.statsD]
|
||||||
|
prefix = "traefik"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.statsd.prefix="traefik"
|
--metrics.statsd.prefix="traefik"
|
||||||
```
|
```
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
To enable the Datadog:
|
To enable the Datadog:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.datadog]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
datadog: {}
|
datadog: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.datadog]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.datadog=true
|
--tracing.datadog=true
|
||||||
```
|
```
|
||||||
|
@ -22,18 +22,18 @@ _Required, Default="127.0.0.1:8126"_
|
||||||
|
|
||||||
Local Agent Host Port instructs reporter to send spans to datadog-tracing-agent at this address.
|
Local Agent Host Port instructs reporter to send spans to datadog-tracing-agent at this address.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.datadog]
|
|
||||||
localAgentHostPort = "127.0.0.1:8126"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
datadog:
|
datadog:
|
||||||
localAgentHostPort: 127.0.0.1:8126
|
localAgentHostPort: 127.0.0.1:8126
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.datadog]
|
||||||
|
localAgentHostPort = "127.0.0.1:8126"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.datadog.localAgentHostPort=127.0.0.1:8126
|
--tracing.datadog.localAgentHostPort=127.0.0.1:8126
|
||||||
```
|
```
|
||||||
|
@ -44,18 +44,18 @@ _Optional, Default=false_
|
||||||
|
|
||||||
Enable Datadog debug.
|
Enable Datadog debug.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.datadog]
|
|
||||||
debug = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
datadog:
|
datadog:
|
||||||
debug: true
|
debug: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.datadog]
|
||||||
|
debug = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.datadog.debug=true
|
--tracing.datadog.debug=true
|
||||||
```
|
```
|
||||||
|
@ -66,18 +66,18 @@ _Optional, Default=empty_
|
||||||
|
|
||||||
Apply shared tag in a form of Key:Value to all the traces.
|
Apply shared tag in a form of Key:Value to all the traces.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.datadog]
|
|
||||||
globalTag = "sample"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
datadog:
|
datadog:
|
||||||
globalTag: sample
|
globalTag: sample
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.datadog]
|
||||||
|
globalTag = "sample"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.datadog.globalTag=sample
|
--tracing.datadog.globalTag=sample
|
||||||
```
|
```
|
||||||
|
@ -89,18 +89,18 @@ _Optional, Default=false_
|
||||||
Enable priority sampling. When using distributed tracing,
|
Enable priority sampling. When using distributed tracing,
|
||||||
this option must be enabled in order to get all the parts of a distributed trace sampled.
|
this option must be enabled in order to get all the parts of a distributed trace sampled.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.datadog]
|
|
||||||
prioritySampling = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
datadog:
|
datadog:
|
||||||
prioritySampling: true
|
prioritySampling: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.datadog]
|
||||||
|
prioritySampling = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.datadog.prioritySampling=true
|
--tracing.datadog.prioritySampling=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
To enable the Elastic:
|
To enable the Elastic:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.elastic]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
elastic: {}
|
elastic: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.elastic]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.elastic=true
|
--tracing.elastic=true
|
||||||
```
|
```
|
||||||
|
@ -22,18 +22,18 @@ _Optional, Default="http://localhost:8200"_
|
||||||
|
|
||||||
APM ServerURL is the URL of the Elastic APM server.
|
APM ServerURL is the URL of the Elastic APM server.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.elastic]
|
|
||||||
serverURL = "http://apm:8200"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
elastic:
|
elastic:
|
||||||
serverURL: "http://apm:8200"
|
serverURL: "http://apm:8200"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.elastic]
|
||||||
|
serverURL = "http://apm:8200"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.elastic.serverurl="http://apm:8200"
|
--tracing.elastic.serverurl="http://apm:8200"
|
||||||
```
|
```
|
||||||
|
@ -44,18 +44,18 @@ _Optional, Default=""_
|
||||||
|
|
||||||
APM Secret Token is the token used to connect to Elastic APM Server.
|
APM Secret Token is the token used to connect to Elastic APM Server.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.elastic]
|
|
||||||
secretToken = "mytoken"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
elastic:
|
elastic:
|
||||||
secretToken: "mytoken"
|
secretToken: "mytoken"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.elastic]
|
||||||
|
secretToken = "mytoken"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.elastic.secrettoken="mytoken"
|
--tracing.elastic.secrettoken="mytoken"
|
||||||
```
|
```
|
||||||
|
@ -66,18 +66,18 @@ _Optional, Default=""_
|
||||||
|
|
||||||
APM Service Environment is the name of the environment Traefik is deployed in, e.g. `production` or `staging`.
|
APM Service Environment is the name of the environment Traefik is deployed in, e.g. `production` or `staging`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.elastic]
|
|
||||||
serviceEnvironment = "production"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
elastic:
|
elastic:
|
||||||
serviceEnvironment: "production"
|
serviceEnvironment: "production"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.elastic]
|
||||||
|
serviceEnvironment = "production"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.elastic.serviceenvironment="production"
|
--tracing.elastic.serviceenvironment="production"
|
||||||
```
|
```
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
To enable the Haystack:
|
To enable the Haystack:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.haystack]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
haystack: {}
|
haystack: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.haystack]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.haystack=true
|
--tracing.haystack=true
|
||||||
```
|
```
|
||||||
|
@ -22,18 +22,18 @@ _Require, Default="127.0.0.1"_
|
||||||
|
|
||||||
Local Agent Host instructs reporter to send spans to haystack-agent at this address.
|
Local Agent Host instructs reporter to send spans to haystack-agent at this address.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.haystack]
|
|
||||||
localAgentHost = "127.0.0.1"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
haystack:
|
haystack:
|
||||||
localAgentHost: 127.0.0.1
|
localAgentHost: 127.0.0.1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.haystack]
|
||||||
|
localAgentHost = "127.0.0.1"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.haystack.localAgentHost=127.0.0.1
|
--tracing.haystack.localAgentHost=127.0.0.1
|
||||||
```
|
```
|
||||||
|
@ -44,18 +44,18 @@ _Require, Default=35000_
|
||||||
|
|
||||||
Local Agent port instructs reporter to send spans to the haystack-agent at this port.
|
Local Agent port instructs reporter to send spans to the haystack-agent at this port.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.haystack]
|
|
||||||
localAgentPort = 35000
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
haystack:
|
haystack:
|
||||||
localAgentPort: 35000
|
localAgentPort: 35000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.haystack]
|
||||||
|
localAgentPort = 35000
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.haystack.localAgentPort=35000
|
--tracing.haystack.localAgentPort=35000
|
||||||
```
|
```
|
||||||
|
@ -66,18 +66,18 @@ _Optional, Default=empty_
|
||||||
|
|
||||||
Apply shared tag in a form of Key:Value to all the traces.
|
Apply shared tag in a form of Key:Value to all the traces.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.haystack]
|
|
||||||
globalTag = "sample:test"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
haystack:
|
haystack:
|
||||||
globalTag: sample:test
|
globalTag: sample:test
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.haystack]
|
||||||
|
globalTag = "sample:test"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.haystack.globalTag=sample:test
|
--tracing.haystack.globalTag=sample:test
|
||||||
```
|
```
|
||||||
|
@ -88,18 +88,18 @@ _Optional, Default=empty_
|
||||||
|
|
||||||
Specifies the header name that will be used to store the trace ID.
|
Specifies the header name that will be used to store the trace ID.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.haystack]
|
|
||||||
traceIDHeaderName = "Trace-ID"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
haystack:
|
haystack:
|
||||||
traceIDHeaderName: Trace-ID
|
traceIDHeaderName: Trace-ID
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.haystack]
|
||||||
|
traceIDHeaderName = "Trace-ID"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.haystack.traceIDHeaderName=Trace-ID
|
--tracing.haystack.traceIDHeaderName=Trace-ID
|
||||||
```
|
```
|
||||||
|
@ -110,18 +110,18 @@ _Optional, Default=empty_
|
||||||
|
|
||||||
Specifies the header name that will be used to store the parent ID.
|
Specifies the header name that will be used to store the parent ID.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.haystack]
|
|
||||||
parentIDHeaderName = "Parent-Message-ID"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
haystack:
|
haystack:
|
||||||
parentIDHeaderName: Parent-Message-ID
|
parentIDHeaderName: Parent-Message-ID
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.haystack]
|
||||||
|
parentIDHeaderName = "Parent-Message-ID"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.haystack.parentIDHeaderName=Parent-Message-ID
|
--tracing.haystack.parentIDHeaderName=Parent-Message-ID
|
||||||
```
|
```
|
||||||
|
@ -132,18 +132,18 @@ _Optional, Default=empty_
|
||||||
|
|
||||||
Specifies the header name that will be used to store the span ID.
|
Specifies the header name that will be used to store the span ID.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.haystack]
|
|
||||||
spanIDHeaderName = "Message-ID"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
haystack:
|
haystack:
|
||||||
spanIDHeaderName: Message-ID
|
spanIDHeaderName: Message-ID
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.haystack]
|
||||||
|
spanIDHeaderName = "Message-ID"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.haystack.spanIDHeaderName=Message-ID
|
--tracing.haystack.spanIDHeaderName=Message-ID
|
||||||
```
|
```
|
||||||
|
@ -154,18 +154,18 @@ _Optional, Default=empty_
|
||||||
|
|
||||||
Specifies the header name prefix that will be used to store baggage items in a map.
|
Specifies the header name prefix that will be used to store baggage items in a map.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.haystack]
|
|
||||||
baggagePrefixHeaderName = "sample"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
haystack:
|
haystack:
|
||||||
baggagePrefixHeaderName: "sample"
|
baggagePrefixHeaderName: "sample"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.haystack]
|
||||||
|
baggagePrefixHeaderName = "sample"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.haystack.baggagePrefixHeaderName=sample
|
--tracing.haystack.baggagePrefixHeaderName=sample
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
To enable the Instana:
|
To enable the Instana:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.instana]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
instana: {}
|
instana: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.instana]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.instana=true
|
--tracing.instana=true
|
||||||
```
|
```
|
||||||
|
@ -22,18 +22,18 @@ _Require, Default="127.0.0.1"_
|
||||||
|
|
||||||
Local Agent Host instructs reporter to send spans to instana-agent at this address.
|
Local Agent Host instructs reporter to send spans to instana-agent at this address.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.instana]
|
|
||||||
localAgentHost = "127.0.0.1"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
instana:
|
instana:
|
||||||
localAgentHost: 127.0.0.1
|
localAgentHost: 127.0.0.1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.instana]
|
||||||
|
localAgentHost = "127.0.0.1"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.instana.localAgentHost=127.0.0.1
|
--tracing.instana.localAgentHost=127.0.0.1
|
||||||
```
|
```
|
||||||
|
@ -44,18 +44,18 @@ _Require, Default=42699_
|
||||||
|
|
||||||
Local Agent port instructs reporter to send spans to the instana-agent at this port.
|
Local Agent port instructs reporter to send spans to the instana-agent at this port.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.instana]
|
|
||||||
localAgentPort = 42699
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
instana:
|
instana:
|
||||||
localAgentPort: 42699
|
localAgentPort: 42699
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.instana]
|
||||||
|
localAgentPort = 42699
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.instana.localAgentPort=42699
|
--tracing.instana.localAgentPort=42699
|
||||||
```
|
```
|
||||||
|
@ -73,18 +73,18 @@ Valid values for logLevel field are:
|
||||||
- `debug`
|
- `debug`
|
||||||
- `info`
|
- `info`
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.instana]
|
|
||||||
logLevel = "info"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
instana:
|
instana:
|
||||||
logLevel: info
|
logLevel: info
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.instana]
|
||||||
|
logLevel = "info"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.instana.logLevel=info
|
--tracing.instana.logLevel=info
|
||||||
```
|
```
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
To enable the Jaeger:
|
To enable the Jaeger:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger: {}
|
jaeger: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger=true
|
--tracing.jaeger=true
|
||||||
```
|
```
|
||||||
|
@ -29,18 +29,18 @@ _Required, Default="http://localhost:5778/sampling"_
|
||||||
|
|
||||||
Sampling Server URL is the address of jaeger-agent's HTTP sampling server.
|
Sampling Server URL is the address of jaeger-agent's HTTP sampling server.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger]
|
|
||||||
samplingServerURL = "http://localhost:5778/sampling"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
samplingServerURL: http://localhost:5778/sampling
|
samplingServerURL: http://localhost:5778/sampling
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger]
|
||||||
|
samplingServerURL = "http://localhost:5778/sampling"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger.samplingServerURL=http://localhost:5778/sampling
|
--tracing.jaeger.samplingServerURL=http://localhost:5778/sampling
|
||||||
```
|
```
|
||||||
|
@ -51,18 +51,18 @@ _Required, Default="const"_
|
||||||
|
|
||||||
Sampling Type specifies the type of the sampler: `const`, `probabilistic`, `rateLimiting`.
|
Sampling Type specifies the type of the sampler: `const`, `probabilistic`, `rateLimiting`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger]
|
|
||||||
samplingType = "const"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
samplingType: const
|
samplingType: const
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger]
|
||||||
|
samplingType = "const"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger.samplingType=const
|
--tracing.jaeger.samplingType=const
|
||||||
```
|
```
|
||||||
|
@ -79,18 +79,18 @@ Valid values for Param field are:
|
||||||
- for `probabilistic` sampler, a probability between 0 and 1
|
- for `probabilistic` sampler, a probability between 0 and 1
|
||||||
- for `rateLimiting` sampler, the number of spans per second
|
- for `rateLimiting` sampler, the number of spans per second
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger]
|
|
||||||
samplingParam = 1.0
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
samplingParam: 1.0
|
samplingParam: 1.0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger]
|
||||||
|
samplingParam = 1.0
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger.samplingParam=1.0
|
--tracing.jaeger.samplingParam=1.0
|
||||||
```
|
```
|
||||||
|
@ -101,18 +101,18 @@ _Required, Default="127.0.0.1:6831"_
|
||||||
|
|
||||||
Local Agent Host Port instructs reporter to send spans to jaeger-agent at this address.
|
Local Agent Host Port instructs reporter to send spans to jaeger-agent at this address.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger]
|
|
||||||
localAgentHostPort = "127.0.0.1:6831"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
localAgentHostPort: 127.0.0.1:6831
|
localAgentHostPort: 127.0.0.1:6831
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger]
|
||||||
|
localAgentHostPort = "127.0.0.1:6831"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger.localAgentHostPort=127.0.0.1:6831
|
--tracing.jaeger.localAgentHostPort=127.0.0.1:6831
|
||||||
```
|
```
|
||||||
|
@ -123,18 +123,18 @@ _Optional, Default=false_
|
||||||
|
|
||||||
Generate 128-bit trace IDs, compatible with OpenCensus.
|
Generate 128-bit trace IDs, compatible with OpenCensus.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger]
|
|
||||||
gen128Bit = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
gen128Bit: true
|
gen128Bit: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger]
|
||||||
|
gen128Bit = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger.gen128Bit
|
--tracing.jaeger.gen128Bit
|
||||||
```
|
```
|
||||||
|
@ -149,18 +149,18 @@ This can be either:
|
||||||
- `jaeger`, jaeger's default trace header.
|
- `jaeger`, jaeger's default trace header.
|
||||||
- `b3`, compatible with OpenZipkin
|
- `b3`, compatible with OpenZipkin
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger]
|
|
||||||
propagation = "jaeger"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
propagation: jaeger
|
propagation: jaeger
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger]
|
||||||
|
propagation = "jaeger"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger.propagation=jaeger
|
--tracing.jaeger.propagation=jaeger
|
||||||
```
|
```
|
||||||
|
@ -172,18 +172,18 @@ _Required, Default="uber-trace-id"_
|
||||||
Trace Context Header Name is the http header name used to propagate tracing context.
|
Trace Context Header Name is the http header name used to propagate tracing context.
|
||||||
This must be in lower-case to avoid mismatches when decoding incoming headers.
|
This must be in lower-case to avoid mismatches when decoding incoming headers.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger]
|
|
||||||
traceContextHeaderName = "uber-trace-id"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
traceContextHeaderName: uber-trace-id
|
traceContextHeaderName: uber-trace-id
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger]
|
||||||
|
traceContextHeaderName = "uber-trace-id"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger.traceContextHeaderName=uber-trace-id
|
--tracing.jaeger.traceContextHeaderName=uber-trace-id
|
||||||
```
|
```
|
||||||
|
@ -195,18 +195,18 @@ _Optional, Default=true_
|
||||||
Disable the UDP connection helper that periodically re-resolves the agent's hostname and reconnects if there was a change.
|
Disable the UDP connection helper that periodically re-resolves the agent's hostname and reconnects if there was a change.
|
||||||
Enabling the re-resolving of UDP address make the client more robust in Kubernetes deployments.
|
Enabling the re-resolving of UDP address make the client more robust in Kubernetes deployments.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger]
|
|
||||||
disableAttemptReconnecting = false
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
disableAttemptReconnecting: false
|
disableAttemptReconnecting: false
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger]
|
||||||
|
disableAttemptReconnecting = false
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger.disableAttemptReconnecting=false
|
--tracing.jaeger.disableAttemptReconnecting=false
|
||||||
```
|
```
|
||||||
|
@ -218,12 +218,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Collector Endpoint instructs reporter to send spans to jaeger-collector at this URL.
|
Collector Endpoint instructs reporter to send spans to jaeger-collector at this URL.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger.collector]
|
|
||||||
endpoint = "http://127.0.0.1:14268/api/traces?format=jaeger.thrift"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
|
@ -231,6 +225,12 @@ tracing:
|
||||||
endpoint: http://127.0.0.1:14268/api/traces?format=jaeger.thrift
|
endpoint: http://127.0.0.1:14268/api/traces?format=jaeger.thrift
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger.collector]
|
||||||
|
endpoint = "http://127.0.0.1:14268/api/traces?format=jaeger.thrift"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--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
|
||||||
```
|
```
|
||||||
|
@ -241,12 +241,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
User instructs reporter to include a user for basic http authentication when sending spans to jaeger-collector.
|
User instructs reporter to include a user for basic http authentication when sending spans to jaeger-collector.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger.collector]
|
|
||||||
user = "my-user"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
|
@ -254,6 +248,12 @@ tracing:
|
||||||
user: my-user
|
user: my-user
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger.collector]
|
||||||
|
user = "my-user"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger.collector.user=my-user
|
--tracing.jaeger.collector.user=my-user
|
||||||
```
|
```
|
||||||
|
@ -264,12 +264,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Password instructs reporter to include a password for basic http authentication when sending spans to jaeger-collector.
|
Password instructs reporter to include a password for basic http authentication when sending spans to jaeger-collector.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.jaeger.collector]
|
|
||||||
password = "my-password"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
jaeger:
|
jaeger:
|
||||||
|
@ -277,6 +271,12 @@ tracing:
|
||||||
password: my-password
|
password: my-password
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.jaeger.collector]
|
||||||
|
password = "my-password"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.jaeger.collector.password=my-password
|
--tracing.jaeger.collector.password=my-password
|
||||||
```
|
```
|
||||||
|
|
|
@ -22,14 +22,14 @@ By default, Traefik uses Jaeger as tracing backend.
|
||||||
|
|
||||||
To enable the tracing:
|
To enable the tracing:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing: {}
|
tracing: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing=true
|
--tracing=true
|
||||||
```
|
```
|
||||||
|
@ -42,16 +42,16 @@ _Required, Default="traefik"_
|
||||||
|
|
||||||
Service name used in selected backend.
|
Service name used in selected backend.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
serviceName = "traefik"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
serviceName: traefik
|
serviceName: traefik
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
serviceName = "traefik"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.serviceName=traefik
|
--tracing.serviceName=traefik
|
||||||
```
|
```
|
||||||
|
@ -65,16 +65,16 @@ This can prevent certain tracing providers to drop traces that exceed their leng
|
||||||
|
|
||||||
`0` means no truncation will occur.
|
`0` means no truncation will occur.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
spanNameLimit = 150
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
spanNameLimit: 150
|
spanNameLimit: 150
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
spanNameLimit = 150
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.spanNameLimit=150
|
--tracing.spanNameLimit=150
|
||||||
```
|
```
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
To enable the Zipkin:
|
To enable the Zipkin:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.zipkin]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
zipkin: {}
|
zipkin: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.zipkin]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.zipkin=true
|
--tracing.zipkin=true
|
||||||
```
|
```
|
||||||
|
@ -22,18 +22,18 @@ _Required, Default="http://localhost:9411/api/v2/spans"_
|
||||||
|
|
||||||
Zipkin HTTP endpoint used to send data.
|
Zipkin HTTP endpoint used to send data.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.zipkin]
|
|
||||||
httpEndpoint = "http://localhost:9411/api/v2/spans"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
zipkin:
|
zipkin:
|
||||||
httpEndpoint: http://localhost:9411/api/v2/spans
|
httpEndpoint: http://localhost:9411/api/v2/spans
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.zipkin]
|
||||||
|
httpEndpoint = "http://localhost:9411/api/v2/spans"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.zipkin.httpEndpoint=http://localhost:9411/api/v2/spans
|
--tracing.zipkin.httpEndpoint=http://localhost:9411/api/v2/spans
|
||||||
```
|
```
|
||||||
|
@ -44,18 +44,18 @@ _Optional, Default=false_
|
||||||
|
|
||||||
Use Zipkin SameSpan RPC style traces.
|
Use Zipkin SameSpan RPC style traces.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.zipkin]
|
|
||||||
sameSpan = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
zipkin:
|
zipkin:
|
||||||
sameSpan: true
|
sameSpan: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.zipkin]
|
||||||
|
sameSpan = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.zipkin.sameSpan=true
|
--tracing.zipkin.sameSpan=true
|
||||||
```
|
```
|
||||||
|
@ -66,18 +66,18 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Use Zipkin 128 bit trace IDs.
|
Use Zipkin 128 bit trace IDs.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.zipkin]
|
|
||||||
id128Bit = false
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
zipkin:
|
zipkin:
|
||||||
id128Bit: false
|
id128Bit: false
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.zipkin]
|
||||||
|
id128Bit = false
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.zipkin.id128Bit=false
|
--tracing.zipkin.id128Bit=false
|
||||||
```
|
```
|
||||||
|
@ -88,18 +88,18 @@ _Required, Default=1.0_
|
||||||
|
|
||||||
The rate between 0.0 and 1.0 of requests to trace.
|
The rate between 0.0 and 1.0 of requests to trace.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[tracing]
|
|
||||||
[tracing.zipkin]
|
|
||||||
sampleRate = 0.2
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
tracing:
|
tracing:
|
||||||
zipkin:
|
zipkin:
|
||||||
sampleRate: 0.2
|
sampleRate: 0.2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[tracing]
|
||||||
|
[tracing.zipkin]
|
||||||
|
sampleRate = 0.2
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--tracing.zipkin.sampleRate=0.2
|
--tracing.zipkin.sampleRate=0.2
|
||||||
```
|
```
|
||||||
|
|
|
@ -26,16 +26,16 @@ If you enable the API, a new special `service` named `api@internal` is created a
|
||||||
To enable the API handler, use the following option on the
|
To enable the API handler, use the following option on the
|
||||||
[static configuration](../getting-started/configuration-overview.md#the-static-configuration):
|
[static configuration](../getting-started/configuration-overview.md#the-static-configuration):
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Static Configuration
|
|
||||||
[api]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Static Configuration
|
# Static Configuration
|
||||||
api: {}
|
api: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Static Configuration
|
||||||
|
[api]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--api=true
|
--api=true
|
||||||
```
|
```
|
||||||
|
@ -74,16 +74,16 @@ Enable the API in `insecure` mode, which means that the API will be available di
|
||||||
!!! info
|
!!! info
|
||||||
If the entryPoint named `traefik` is not configured, it will be automatically created on port 8080.
|
If the entryPoint named `traefik` is not configured, it will be automatically created on port 8080.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[api]
|
|
||||||
insecure = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
api:
|
api:
|
||||||
insecure: true
|
insecure: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[api]
|
||||||
|
insecure = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--api.insecure=true
|
--api.insecure=true
|
||||||
```
|
```
|
||||||
|
@ -94,16 +94,16 @@ _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)"
|
|
||||||
[api]
|
|
||||||
dashboard = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
api:
|
api:
|
||||||
dashboard: true
|
dashboard: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[api]
|
||||||
|
dashboard = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--api.dashboard=true
|
--api.dashboard=true
|
||||||
```
|
```
|
||||||
|
@ -117,16 +117,16 @@ _Optional, Default=false_
|
||||||
|
|
||||||
Enable additional [endpoints](./api.md#endpoints) for debugging and profiling, served under `/debug/`.
|
Enable additional [endpoints](./api.md#endpoints) for debugging and profiling, served under `/debug/`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[api]
|
|
||||||
debug = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
api:
|
api:
|
||||||
debug: true
|
debug: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[api]
|
||||||
|
debug = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--api.debug=true
|
--api.debug=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -31,16 +31,6 @@ This is the **recommended** method.
|
||||||
Start by enabling the dashboard by using the following option from [Traefik's API](./api.md)
|
Start by enabling the dashboard by using the following option from [Traefik's API](./api.md)
|
||||||
on the [static configuration](../getting-started/configuration-overview.md#the-static-configuration):
|
on the [static configuration](../getting-started/configuration-overview.md#the-static-configuration):
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[api]
|
|
||||||
# Dashboard
|
|
||||||
#
|
|
||||||
# Optional
|
|
||||||
# Default: true
|
|
||||||
#
|
|
||||||
dashboard = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
api:
|
api:
|
||||||
# Dashboard
|
# Dashboard
|
||||||
|
@ -51,6 +41,16 @@ api:
|
||||||
dashboard: true
|
dashboard: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[api]
|
||||||
|
# Dashboard
|
||||||
|
#
|
||||||
|
# Optional
|
||||||
|
# Default: true
|
||||||
|
#
|
||||||
|
dashboard = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# Dashboard
|
# Dashboard
|
||||||
#
|
#
|
||||||
|
@ -105,18 +105,18 @@ This mode is not recommended because it does not allow the use of security featu
|
||||||
|
|
||||||
To enable the "insecure mode", use the following options from [Traefik's API](./api.md#insecure):
|
To enable the "insecure mode", use the following options from [Traefik's API](./api.md#insecure):
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[api]
|
|
||||||
dashboard = true
|
|
||||||
insecure = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
api:
|
api:
|
||||||
dashboard: true
|
dashboard: true
|
||||||
insecure: true
|
insecure: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[api]
|
||||||
|
dashboard = true
|
||||||
|
insecure = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--api.dashboard=true --api.insecure=true
|
--api.dashboard=true --api.insecure=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -69,20 +69,6 @@ labels:
|
||||||
- "traefik.http.middlewares.auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0"
|
- "traefik.http.middlewares.auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic Configuration
|
|
||||||
[http.routers.my-api]
|
|
||||||
rule = "Host(`traefik.example.com`)"
|
|
||||||
service = "api@internal"
|
|
||||||
middlewares = ["auth"]
|
|
||||||
|
|
||||||
[http.middlewares.auth.basicAuth]
|
|
||||||
users = [
|
|
||||||
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
|
||||||
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic Configuration
|
# Dynamic Configuration
|
||||||
http:
|
http:
|
||||||
|
@ -99,3 +85,17 @@ http:
|
||||||
- "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"
|
- "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"
|
||||||
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
|
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic Configuration
|
||||||
|
[http.routers.my-api]
|
||||||
|
rule = "Host(`traefik.example.com`)"
|
||||||
|
service = "api@internal"
|
||||||
|
middlewares = ["auth"]
|
||||||
|
|
||||||
|
[http.middlewares.auth.basicAuth]
|
||||||
|
users = [
|
||||||
|
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
||||||
|
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
|
@ -69,20 +69,6 @@ labels:
|
||||||
- "traefik.http.middlewares.auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0"
|
- "traefik.http.middlewares.auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/,test2:$$apr1$$d9hr9HBB$$4HxwgUir3HP4EsggP/QNo0"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Dynamic Configuration
|
|
||||||
[http.routers.my-api]
|
|
||||||
rule = "Host(`traefik.example.com`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
|
|
||||||
service = "api@internal"
|
|
||||||
middlewares = ["auth"]
|
|
||||||
|
|
||||||
[http.middlewares.auth.basicAuth]
|
|
||||||
users = [
|
|
||||||
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
|
||||||
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Dynamic Configuration
|
# Dynamic Configuration
|
||||||
http:
|
http:
|
||||||
|
@ -99,3 +85,17 @@ http:
|
||||||
- "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"
|
- "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"
|
||||||
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
|
- "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Dynamic Configuration
|
||||||
|
[http.routers.my-api]
|
||||||
|
rule = "Host(`traefik.example.com`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
|
||||||
|
service = "api@internal"
|
||||||
|
middlewares = ["auth"]
|
||||||
|
|
||||||
|
[http.middlewares.auth.basicAuth]
|
||||||
|
users = [
|
||||||
|
"test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
||||||
|
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0",
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
|
@ -7,14 +7,14 @@ Checking the Health of Your Traefik Instances
|
||||||
|
|
||||||
To enable the API handler:
|
To enable the API handler:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[ping]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
ping: {}
|
ping: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[ping]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--ping=true
|
--ping=true
|
||||||
```
|
```
|
||||||
|
@ -39,15 +39,6 @@ _Optional, Default="traefik"_
|
||||||
|
|
||||||
Enabling /ping on a dedicated EntryPoint.
|
Enabling /ping on a dedicated EntryPoint.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.ping]
|
|
||||||
address = ":8082"
|
|
||||||
|
|
||||||
[ping]
|
|
||||||
entryPoint = "ping"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
ping:
|
ping:
|
||||||
|
@ -57,6 +48,15 @@ ping:
|
||||||
entryPoint: "ping"
|
entryPoint: "ping"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.ping]
|
||||||
|
address = ":8082"
|
||||||
|
|
||||||
|
[ping]
|
||||||
|
entryPoint = "ping"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entryPoints.ping.address=:8082
|
--entryPoints.ping.address=:8082
|
||||||
--ping.entryPoint=ping
|
--ping.entryPoint=ping
|
||||||
|
@ -68,16 +68,16 @@ _Optional, Default=false_
|
||||||
|
|
||||||
If `manualRouting` is `true`, it disables the default internal router in order to allow one to create a custom router for the `ping@internal` service.
|
If `manualRouting` is `true`, it disables the default internal router in order to allow one to create a custom router for the `ping@internal` service.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[ping]
|
|
||||||
manualRouting = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
ping:
|
ping:
|
||||||
manualRouting: true
|
manualRouting: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[ping]
|
||||||
|
manualRouting = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--ping.manualrouting=true
|
--ping.manualrouting=true
|
||||||
```
|
```
|
||||||
|
@ -93,16 +93,16 @@ be expected as the signal for graceful termination. In which case, the
|
||||||
terminatingStatusCode can be used to set the code returned by the ping
|
terminatingStatusCode can be used to set the code returned by the ping
|
||||||
handler during termination.
|
handler during termination.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[ping]
|
|
||||||
terminatingStatusCode = 204
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
ping:
|
ping:
|
||||||
terminatingStatusCode: 204
|
terminatingStatusCode: 204
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[ping]
|
||||||
|
terminatingStatusCode = 204
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--ping.terminatingStatusCode=204
|
--ping.terminatingStatusCode=204
|
||||||
```
|
```
|
||||||
|
|
|
@ -13,15 +13,15 @@ Attach tags to your services and let Traefik do the rest!
|
||||||
|
|
||||||
Enabling the consul catalog provider
|
Enabling the consul catalog provider
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog: {}
|
consulCatalog: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog=true
|
--providers.consulcatalog=true
|
||||||
```
|
```
|
||||||
|
@ -44,12 +44,6 @@ _Optional, Default=15s_
|
||||||
|
|
||||||
Defines the polling interval.
|
Defines the polling interval.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
refreshInterval = "30s"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -57,6 +51,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
refreshInterval = "30s"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.refreshInterval=30s
|
--providers.consulcatalog.refreshInterval=30s
|
||||||
# ...
|
# ...
|
||||||
|
@ -68,12 +68,6 @@ _required, Default="traefik"_
|
||||||
|
|
||||||
The prefix for Consul Catalog tags defining Traefik labels.
|
The prefix for Consul Catalog tags defining Traefik labels.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
prefix = "test"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -81,6 +75,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
prefix = "test"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.prefix=test
|
--providers.consulcatalog.prefix=test
|
||||||
# ...
|
# ...
|
||||||
|
@ -98,12 +98,6 @@ Forces the read to be fully consistent.
|
||||||
|
|
||||||
For more information, see the consul [documentation on consistency](https://www.consul.io/api-docs/features/consistency).
|
For more information, see the consul [documentation on consistency](https://www.consul.io/api-docs/features/consistency).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
requireConsistent = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -111,6 +105,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
requireConsistent = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.requireConsistent=true
|
--providers.consulcatalog.requireConsistent=true
|
||||||
# ...
|
# ...
|
||||||
|
@ -128,12 +128,6 @@ Use stale consistency for catalog reads.
|
||||||
|
|
||||||
For more information, see the consul [documentation on consistency](https://www.consul.io/api-docs/features/consistency).
|
For more information, see the consul [documentation on consistency](https://www.consul.io/api-docs/features/consistency).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
stale = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -141,6 +135,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
stale = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.stale=true
|
--providers.consulcatalog.stale=true
|
||||||
# ...
|
# ...
|
||||||
|
@ -152,12 +152,6 @@ _Optional, Default=false_
|
||||||
|
|
||||||
Use local agent caching for catalog reads.
|
Use local agent caching for catalog reads.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
cache = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -165,6 +159,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
cache = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.cache=true
|
--providers.consulcatalog.cache=true
|
||||||
# ...
|
# ...
|
||||||
|
@ -180,13 +180,6 @@ Defines the address of the Consul server.
|
||||||
|
|
||||||
_Optional, Default="127.0.0.1:8500"_
|
_Optional, Default="127.0.0.1:8500"_
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
[providers.consulCatalog.endpoint]
|
|
||||||
address = "127.0.0.1:8500"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -195,6 +188,13 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
[providers.consulCatalog.endpoint]
|
||||||
|
address = "127.0.0.1:8500"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.address=127.0.0.1:8500
|
--providers.consulcatalog.endpoint.address=127.0.0.1:8500
|
||||||
# ...
|
# ...
|
||||||
|
@ -206,13 +206,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Defines the URI scheme for the Consul server.
|
Defines the URI scheme for the Consul server.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
[providers.consulCatalog.endpoint]
|
|
||||||
scheme = "https"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -221,6 +214,13 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
[providers.consulCatalog.endpoint]
|
||||||
|
scheme = "https"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.scheme=https
|
--providers.consulcatalog.endpoint.scheme=https
|
||||||
# ...
|
# ...
|
||||||
|
@ -233,13 +233,6 @@ _Optional, Default=""_
|
||||||
Defines the datacenter to use.
|
Defines the datacenter to use.
|
||||||
If not provided in Traefik, Consul uses the default agent datacenter.
|
If not provided in Traefik, Consul uses the default agent datacenter.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
[providers.consulCatalog.endpoint]
|
|
||||||
datacenter = "test"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -248,6 +241,13 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
[providers.consulCatalog.endpoint]
|
||||||
|
datacenter = "test"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.datacenter=test
|
--providers.consulcatalog.endpoint.datacenter=test
|
||||||
# ...
|
# ...
|
||||||
|
@ -259,13 +259,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Token is used to provide a per-request ACL token which overwrites the agent's default token.
|
Token is used to provide a per-request ACL token which overwrites the agent's default token.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
[providers.consulCatalog.endpoint]
|
|
||||||
token = "test"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -274,6 +267,13 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
[providers.consulCatalog.endpoint]
|
||||||
|
token = "test"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.token=test
|
--providers.consulcatalog.endpoint.token=test
|
||||||
# ...
|
# ...
|
||||||
|
@ -286,13 +286,6 @@ _Optional, Default=""_
|
||||||
Limits the duration for which a Watch can block.
|
Limits the duration for which a Watch can block.
|
||||||
If not provided, the agent default values will be used.
|
If not provided, the agent default values will be used.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
[providers.consulCatalog.endpoint]
|
|
||||||
endpointWaitTime = "15s"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -301,6 +294,13 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
[providers.consulCatalog.endpoint]
|
||||||
|
endpointWaitTime = "15s"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.endpointwaittime=15s
|
--providers.consulcatalog.endpoint.endpointwaittime=15s
|
||||||
# ...
|
# ...
|
||||||
|
@ -318,11 +318,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Username to use for HTTP Basic Authentication.
|
Username to use for HTTP Basic Authentication.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog.endpoint.httpAuth]
|
|
||||||
username = "test"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -331,6 +326,11 @@ providers:
|
||||||
username: test
|
username: test
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog.endpoint.httpAuth]
|
||||||
|
username = "test"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.httpauth.username=test
|
--providers.consulcatalog.endpoint.httpauth.username=test
|
||||||
```
|
```
|
||||||
|
@ -341,11 +341,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Password to use for HTTP Basic Authentication.
|
Password to use for HTTP Basic Authentication.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog.endpoint.httpAuth]
|
|
||||||
password = "test"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -354,6 +349,11 @@ providers:
|
||||||
password: test
|
password: test
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog.endpoint.httpAuth]
|
||||||
|
password = "test"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.httpauth.password=test
|
--providers.consulcatalog.endpoint.httpauth.password=test
|
||||||
```
|
```
|
||||||
|
@ -370,11 +370,6 @@ _Optional_
|
||||||
|
|
||||||
`ca` is the path to the CA certificate used for Consul communication, defaults to the system bundle if not specified.
|
`ca` is the path to the CA certificate used for Consul communication, defaults to the system bundle if not specified.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog.endpoint.tls]
|
|
||||||
ca = "path/to/ca.crt"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -383,6 +378,11 @@ providers:
|
||||||
ca: path/to/ca.crt
|
ca: path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog.endpoint.tls]
|
||||||
|
ca = "path/to/ca.crt"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.tls.ca=path/to/ca.crt
|
--providers.consulcatalog.endpoint.tls.ca=path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -401,11 +401,6 @@ When this option is set to `true`, a client certificate is requested during the
|
||||||
|
|
||||||
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog.endpoint.tls]
|
|
||||||
caOptional = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -414,6 +409,11 @@ providers:
|
||||||
caOptional: true
|
caOptional: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog.endpoint.tls]
|
||||||
|
caOptional = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.tls.caoptional=true
|
--providers.consulcatalog.endpoint.tls.caoptional=true
|
||||||
```
|
```
|
||||||
|
@ -426,12 +426,6 @@ _Optional_
|
||||||
|
|
||||||
When using this option, setting the `key` option is required.
|
When using this option, setting the `key` option is required.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog.endpoint.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -441,6 +435,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog.endpoint.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.tls.cert=path/to/foo.cert
|
--providers.consulcatalog.endpoint.tls.cert=path/to/foo.cert
|
||||||
--providers.consulcatalog.endpoint.tls.key=path/to/foo.key
|
--providers.consulcatalog.endpoint.tls.key=path/to/foo.key
|
||||||
|
@ -454,12 +454,6 @@ _Optional_
|
||||||
|
|
||||||
When using this option, setting the `cert` option is required.
|
When using this option, setting the `cert` option is required.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog.endpoint.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -469,6 +463,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog.endpoint.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.tls.cert=path/to/foo.cert
|
--providers.consulcatalog.endpoint.tls.cert=path/to/foo.cert
|
||||||
--providers.consulcatalog.endpoint.tls.key=path/to/foo.key
|
--providers.consulcatalog.endpoint.tls.key=path/to/foo.key
|
||||||
|
@ -480,11 +480,6 @@ _Optional_
|
||||||
|
|
||||||
If `insecureSkipVerify` is `true`, the TLS connection to Consul accepts any certificate presented by the server regardless of the hostnames it covers.
|
If `insecureSkipVerify` is `true`, the TLS connection to Consul accepts any certificate presented by the server regardless of the hostnames it covers.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog.endpoint.tls]
|
|
||||||
insecureSkipVerify = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -493,6 +488,11 @@ providers:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog.endpoint.tls]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.endpoint.tls.insecureskipverify=true
|
--providers.consulcatalog.endpoint.tls.insecureskipverify=true
|
||||||
```
|
```
|
||||||
|
@ -506,12 +506,6 @@ If set to `false`, services that don't have a `traefik.enable=true` tag will be
|
||||||
|
|
||||||
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
exposedByDefault = false
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -519,6 +513,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
exposedByDefault = false
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.exposedByDefault=false
|
--providers.consulcatalog.exposedByDefault=false
|
||||||
# ...
|
# ...
|
||||||
|
@ -538,12 +538,6 @@ and the template has access to all the labels (i.e. tags beginning with the `pre
|
||||||
|
|
||||||
The option can be overridden on an instance basis with the `traefik.http.routers.{name-of-your-choice}.rule` tag.
|
The option can be overridden on an instance basis with the `traefik.http.routers.{name-of-your-choice}.rule` tag.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
defaultRule = "Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -551,6 +545,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
defaultRule = "Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.defaultRule="Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
--providers.consulcatalog.defaultRule="Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
||||||
# ...
|
# ...
|
||||||
|
@ -599,12 +599,6 @@ as well as the usual boolean logic, as shown in examples below.
|
||||||
constraints = "TagRegex(`a\.tag\.t.+`)"
|
constraints = "TagRegex(`a\.tag\.t.+`)"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consulCatalog]
|
|
||||||
constraints = "Tag(`a.tag.name`)"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consulCatalog:
|
consulCatalog:
|
||||||
|
@ -612,6 +606,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consulCatalog]
|
||||||
|
constraints = "Tag(`a.tag.name`)"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consulcatalog.constraints="Tag(`a.tag.name`)"
|
--providers.consulcatalog.constraints="Tag(`a.tag.name`)"
|
||||||
# ...
|
# ...
|
||||||
|
|
|
@ -17,11 +17,6 @@ _Required, Default="127.0.0.1:8500"_
|
||||||
|
|
||||||
Defines how to access to Consul.
|
Defines how to access to Consul.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consul]
|
|
||||||
endpoints = ["127.0.0.1:8500"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consul:
|
consul:
|
||||||
|
@ -29,6 +24,11 @@ providers:
|
||||||
- "127.0.0.1:8500"
|
- "127.0.0.1:8500"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consul]
|
||||||
|
endpoints = ["127.0.0.1:8500"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consul.endpoints=127.0.0.1:8500
|
--providers.consul.endpoints=127.0.0.1:8500
|
||||||
```
|
```
|
||||||
|
@ -39,17 +39,17 @@ _Required, Default="traefik"_
|
||||||
|
|
||||||
Defines the root key of the configuration.
|
Defines the root key of the configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consul]
|
|
||||||
rootKey = "traefik"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consul:
|
consul:
|
||||||
rootKey: "traefik"
|
rootKey: "traefik"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consul]
|
||||||
|
rootKey = "traefik"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consul.rootkey=traefik
|
--providers.consul.rootkey=traefik
|
||||||
```
|
```
|
||||||
|
@ -60,12 +60,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Defines a username to connect to Consul with.
|
Defines a username to connect to Consul with.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consul]
|
|
||||||
# ...
|
|
||||||
username = "foo"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consul:
|
consul:
|
||||||
|
@ -73,6 +67,12 @@ providers:
|
||||||
usename: "foo"
|
usename: "foo"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consul]
|
||||||
|
# ...
|
||||||
|
username = "foo"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consul.username=foo
|
--providers.consul.username=foo
|
||||||
```
|
```
|
||||||
|
@ -83,12 +83,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Defines a password with which to connect to Consul.
|
Defines a password with which to connect to Consul.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consul]
|
|
||||||
# ...
|
|
||||||
password = "bar"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consul:
|
consul:
|
||||||
|
@ -96,6 +90,12 @@ providers:
|
||||||
password: "bar"
|
password: "bar"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consul]
|
||||||
|
# ...
|
||||||
|
password = "bar"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consul.password=foo
|
--providers.consul.password=foo
|
||||||
```
|
```
|
||||||
|
@ -108,11 +108,6 @@ _Optional_
|
||||||
|
|
||||||
Certificate Authority used for the secure connection to Consul.
|
Certificate Authority used for the secure connection to Consul.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consul.tls]
|
|
||||||
ca = "path/to/ca.crt"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consul:
|
consul:
|
||||||
|
@ -120,6 +115,11 @@ providers:
|
||||||
ca: path/to/ca.crt
|
ca: path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consul.tls]
|
||||||
|
ca = "path/to/ca.crt"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consul.tls.ca=path/to/ca.crt
|
--providers.consul.tls.ca=path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -136,11 +136,6 @@ When this option is set to `true`, a client certificate is requested during the
|
||||||
|
|
||||||
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consul.tls]
|
|
||||||
caOptional = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consul:
|
consul:
|
||||||
|
@ -148,6 +143,11 @@ providers:
|
||||||
caOptional: true
|
caOptional: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consul.tls]
|
||||||
|
caOptional = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consul.tls.caOptional=true
|
--providers.consul.tls.caOptional=true
|
||||||
```
|
```
|
||||||
|
@ -156,12 +156,6 @@ providers:
|
||||||
|
|
||||||
Public certificate used for the secure connection to Consul.
|
Public certificate used for the secure connection to Consul.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consul.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consul:
|
consul:
|
||||||
|
@ -170,6 +164,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consul.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consul.tls.cert=path/to/foo.cert
|
--providers.consul.tls.cert=path/to/foo.cert
|
||||||
--providers.consul.tls.key=path/to/foo.key
|
--providers.consul.tls.key=path/to/foo.key
|
||||||
|
@ -179,12 +179,6 @@ providers:
|
||||||
|
|
||||||
Private certificate used for the secure connection to Consul.
|
Private certificate used for the secure connection to Consul.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consul.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consul:
|
consul:
|
||||||
|
@ -193,6 +187,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consul.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consul.tls.cert=path/to/foo.cert
|
--providers.consul.tls.cert=path/to/foo.cert
|
||||||
--providers.consul.tls.key=path/to/foo.key
|
--providers.consul.tls.key=path/to/foo.key
|
||||||
|
@ -202,11 +202,6 @@ providers:
|
||||||
|
|
||||||
If `insecureSkipVerify` is `true`, the TLS connection to Consul accepts any certificate presented by the server regardless of the hostnames it covers.
|
If `insecureSkipVerify` is `true`, the TLS connection to Consul accepts any certificate presented by the server regardless of the hostnames it covers.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.consul.tls]
|
|
||||||
insecureSkipVerify = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
consul:
|
consul:
|
||||||
|
@ -214,6 +209,11 @@ providers:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.consul.tls]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.consul.tls.insecureSkipVerify=true
|
--providers.consul.tls.insecureSkipVerify=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -20,15 +20,15 @@ and [Docker Swarm Mode](https://docs.docker.com/engine/swarm/).
|
||||||
|
|
||||||
Enabling the docker provider
|
Enabling the docker provider
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker: {}
|
docker: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker=true
|
--providers.docker=true
|
||||||
```
|
```
|
||||||
|
@ -48,15 +48,6 @@ and [Docker Swarm Mode](https://docs.docker.com/engine/swarm/).
|
||||||
|
|
||||||
Enabling the docker provider (Swarm Mode)
|
Enabling the docker provider (Swarm Mode)
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
# swarm classic (1.12-)
|
|
||||||
# endpoint = "tcp://127.0.0.1:2375"
|
|
||||||
# docker swarm mode (1.12+)
|
|
||||||
endpoint = "tcp://127.0.0.1:2377"
|
|
||||||
swarmMode = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -67,6 +58,15 @@ and [Docker Swarm Mode](https://docs.docker.com/engine/swarm/).
|
||||||
swarmMode: true
|
swarmMode: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
# swarm classic (1.12-)
|
||||||
|
# endpoint = "tcp://127.0.0.1:2375"
|
||||||
|
# docker swarm mode (1.12+)
|
||||||
|
endpoint = "tcp://127.0.0.1:2377"
|
||||||
|
swarmMode = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# swarm classic (1.12-)
|
# swarm classic (1.12-)
|
||||||
# --providers.docker.endpoint=tcp://127.0.0.1:2375
|
# --providers.docker.endpoint=tcp://127.0.0.1:2375
|
||||||
|
@ -261,12 +261,6 @@ See the sections [Docker API Access](#docker-api-access) and [Docker Swarm API A
|
||||||
|
|
||||||
We specify the docker.sock in traefik's configuration file.
|
We specify the docker.sock in traefik's configuration file.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
endpoint = "unix:///var/run/docker.sock"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -274,6 +268,12 @@ See the sections [Docker API Access](#docker-api-access) and [Docker Swarm API A
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
endpoint = "unix:///var/run/docker.sock"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.endpoint=unix:///var/run/docker.sock
|
--providers.docker.endpoint=unix:///var/run/docker.sock
|
||||||
# ...
|
# ...
|
||||||
|
@ -285,12 +285,6 @@ See the sections [Docker API Access](#docker-api-access) and [Docker Swarm API A
|
||||||
We specify the SSH host and user in Traefik's configuration file.
|
We specify the SSH host and user in Traefik's configuration file.
|
||||||
Note that is server requires public keys for authentication you must have those accessible for user who runs Traefik.
|
Note that is server requires public keys for authentication you must have those accessible for user who runs Traefik.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
endpoint = "ssh://traefik@192.168.2.5:2022"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -298,22 +292,28 @@ See the sections [Docker API Access](#docker-api-access) and [Docker Swarm API A
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
endpoint = "ssh://traefik@192.168.2.5:2022"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.endpoint=ssh://traefik@192.168.2.5:2022
|
--providers.docker.endpoint=ssh://traefik@192.168.2.5:2022
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
endpoint = "unix:///var/run/docker.sock"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
endpoint: "unix:///var/run/docker.sock"
|
endpoint: "unix:///var/run/docker.sock"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
endpoint = "unix:///var/run/docker.sock"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.endpoint=unix:///var/run/docker.sock
|
--providers.docker.endpoint=unix:///var/run/docker.sock
|
||||||
```
|
```
|
||||||
|
@ -350,12 +350,6 @@ but still uses the `traefik.http.services.<name>.loadbalancer.server.port` that
|
||||||
- `ExtPort` stands for "external Port found in the binding"
|
- `ExtPort` stands for "external Port found in the binding"
|
||||||
- `IntPort` stands for "internal network container's port."
|
- `IntPort` stands for "internal network container's port."
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
useBindPortIP = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -363,6 +357,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
useBindPortIP = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.useBindPortIP=true
|
--providers.docker.useBindPortIP=true
|
||||||
# ...
|
# ...
|
||||||
|
@ -377,12 +377,6 @@ If set to `false`, containers that do not have a `traefik.enable=true` label are
|
||||||
|
|
||||||
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
exposedByDefault = false
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -390,6 +384,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
exposedByDefault = false
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.exposedByDefault=false
|
--providers.docker.exposedByDefault=false
|
||||||
# ...
|
# ...
|
||||||
|
@ -403,12 +403,6 @@ Defines a default docker network to use for connections to all containers.
|
||||||
|
|
||||||
This option can be overridden on a per-container basis with the `traefik.docker.network` label.
|
This option can be overridden on a per-container basis with the `traefik.docker.network` label.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
network = "test"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -416,6 +410,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
network = "test"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.network=test
|
--providers.docker.network=test
|
||||||
# ...
|
# ...
|
||||||
|
@ -432,12 +432,6 @@ It must be a valid [Go template](https://golang.org/pkg/text/template/), and can
|
||||||
The container service name can be accessed with the `Name` identifier,
|
The container service name can be accessed with the `Name` identifier,
|
||||||
and the template has access to all the labels defined on this container.
|
and the template has access to all the labels defined on this container.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
defaultRule = "Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -445,6 +439,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
defaultRule = "Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.defaultRule=Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)
|
--providers.docker.defaultRule=Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)
|
||||||
# ...
|
# ...
|
||||||
|
@ -456,12 +456,6 @@ _Optional, Default=false_
|
||||||
|
|
||||||
Enables the Swarm Mode (instead of standalone Docker).
|
Enables the Swarm Mode (instead of standalone Docker).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
swarmMode = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -469,6 +463,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
swarmMode = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.swarmMode=true
|
--providers.docker.swarmMode=true
|
||||||
# ...
|
# ...
|
||||||
|
@ -480,12 +480,6 @@ _Optional, Default=15_
|
||||||
|
|
||||||
Defines the polling interval (in seconds) for Swarm Mode.
|
Defines the polling interval (in seconds) for Swarm Mode.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
swarmModeRefreshSeconds = 30
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -493,6 +487,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
swarmModeRefreshSeconds = 30
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.swarmModeRefreshSeconds=30
|
--providers.docker.swarmModeRefreshSeconds=30
|
||||||
# ...
|
# ...
|
||||||
|
@ -504,12 +504,6 @@ _Optional, Default=0_
|
||||||
|
|
||||||
Defines the client timeout (in seconds) for HTTP connections. If its value is `0`, no timeout is set.
|
Defines the client timeout (in seconds) for HTTP connections. If its value is `0`, no timeout is set.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
httpClientTimeout = 300
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -517,6 +511,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
httpClientTimeout = 300
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.httpClientTimeout=300
|
--providers.docker.httpClientTimeout=300
|
||||||
# ...
|
# ...
|
||||||
|
@ -528,12 +528,6 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Watch Docker Swarm events.
|
Watch Docker Swarm events.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
watch = false
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -541,6 +535,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
watch = false
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.watch=false
|
--providers.docker.watch=false
|
||||||
# ...
|
# ...
|
||||||
|
@ -591,12 +591,6 @@ as well as the usual boolean logic, as shown in examples below.
|
||||||
|
|
||||||
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
constraints = "Label(`a.label.name`,`foo`)"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -604,6 +598,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
constraints = "Label(`a.label.name`,`foo`)"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.constraints=Label(`a.label.name`,`foo`)
|
--providers.docker.constraints=Label(`a.label.name`,`foo`)
|
||||||
# ...
|
# ...
|
||||||
|
@ -617,11 +617,6 @@ _Optional_
|
||||||
|
|
||||||
Certificate Authority used for the secure connection to Docker.
|
Certificate Authority used for the secure connection to Docker.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker.tls]
|
|
||||||
ca = "path/to/ca.crt"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -629,6 +624,11 @@ providers:
|
||||||
ca: path/to/ca.crt
|
ca: path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker.tls]
|
||||||
|
ca = "path/to/ca.crt"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.tls.ca=path/to/ca.crt
|
--providers.docker.tls.ca=path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -645,11 +645,6 @@ When this option is set to `true`, a client certificate is requested during the
|
||||||
|
|
||||||
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker.tls]
|
|
||||||
caOptional = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -657,6 +652,11 @@ providers:
|
||||||
caOptional: true
|
caOptional: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker.tls]
|
||||||
|
caOptional = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.tls.caOptional=true
|
--providers.docker.tls.caOptional=true
|
||||||
```
|
```
|
||||||
|
@ -665,12 +665,6 @@ providers:
|
||||||
|
|
||||||
Public certificate used for the secure connection to Docker.
|
Public certificate used for the secure connection to Docker.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -679,6 +673,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.tls.cert=path/to/foo.cert
|
--providers.docker.tls.cert=path/to/foo.cert
|
||||||
--providers.docker.tls.key=path/to/foo.key
|
--providers.docker.tls.key=path/to/foo.key
|
||||||
|
@ -688,12 +688,6 @@ providers:
|
||||||
|
|
||||||
Private certificate used for the secure connection to Docker.
|
Private certificate used for the secure connection to Docker.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -702,6 +696,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.tls.cert=path/to/foo.cert
|
--providers.docker.tls.cert=path/to/foo.cert
|
||||||
--providers.docker.tls.key=path/to/foo.key
|
--providers.docker.tls.key=path/to/foo.key
|
||||||
|
@ -711,11 +711,6 @@ providers:
|
||||||
|
|
||||||
If `insecureSkipVerify` is `true`, the TLS connection to Docker accepts any certificate presented by the server regardless of the hostnames it covers.
|
If `insecureSkipVerify` is `true`, the TLS connection to Docker accepts any certificate presented by the server regardless of the hostnames it covers.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker.tls]
|
|
||||||
insecureSkipVerify = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -723,6 +718,11 @@ providers:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker.tls]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker.tls.insecureSkipVerify=true
|
--providers.docker.tls.insecureSkipVerify=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -11,15 +11,15 @@ Attach labels to your ECS containers and let Traefik do the rest!
|
||||||
|
|
||||||
Enabling the ECS provider:
|
Enabling the ECS provider:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.ecs]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
ecs: {}
|
ecs: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.ecs]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.ecs=true
|
--providers.ecs=true
|
||||||
```
|
```
|
||||||
|
@ -63,12 +63,6 @@ Search for services in cluster list.
|
||||||
- If set to `true` service discovery is disabled on configured clusters, but enabled for all other clusters.
|
- If set to `true` service discovery is disabled on configured clusters, but enabled for all other clusters.
|
||||||
- If set to `false` service discovery is enabled on configured clusters only.
|
- If set to `false` service discovery is enabled on configured clusters only.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.ecs]
|
|
||||||
autoDiscoverClusters = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
ecs:
|
ecs:
|
||||||
|
@ -76,6 +70,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.ecs]
|
||||||
|
autoDiscoverClusters = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.ecs.autoDiscoverClusters=true
|
--providers.ecs.autoDiscoverClusters=true
|
||||||
# ...
|
# ...
|
||||||
|
@ -87,12 +87,6 @@ _Optional, Default=["default"]_
|
||||||
|
|
||||||
Search for services in cluster list.
|
Search for services in cluster list.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.ecs]
|
|
||||||
clusters = ["default"]
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
ecs:
|
ecs:
|
||||||
|
@ -101,6 +95,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.ecs]
|
||||||
|
clusters = ["default"]
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.ecs.clusters=default
|
--providers.ecs.clusters=default
|
||||||
# ...
|
# ...
|
||||||
|
@ -114,12 +114,6 @@ Expose ECS services by default in Traefik.
|
||||||
|
|
||||||
If set to `false`, services that do not have a `traefik.enable=true` label are ignored from the resulting routing configuration.
|
If set to `false`, services that do not have a `traefik.enable=true` label are ignored from the resulting routing configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.ecs]
|
|
||||||
exposedByDefault = false
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
ecs:
|
ecs:
|
||||||
|
@ -127,6 +121,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.ecs]
|
||||||
|
exposedByDefault = false
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.ecs.exposedByDefault=false
|
--providers.ecs.exposedByDefault=false
|
||||||
# ...
|
# ...
|
||||||
|
@ -143,12 +143,6 @@ It must be a valid [Go template](https://golang.org/pkg/text/template/), and can
|
||||||
The container service name can be accessed with the `Name` identifier,
|
The container service name can be accessed with the `Name` identifier,
|
||||||
and the template has access to all the labels defined on this container.
|
and the template has access to all the labels defined on this container.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.ecs]
|
|
||||||
defaultRule = "Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
ecs:
|
ecs:
|
||||||
|
@ -156,6 +150,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.ecs]
|
||||||
|
defaultRule = "Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.ecs.defaultRule=Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)
|
--providers.ecs.defaultRule=Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)
|
||||||
# ...
|
# ...
|
||||||
|
@ -167,12 +167,6 @@ _Optional, Default=15_
|
||||||
|
|
||||||
Polling interval (in seconds).
|
Polling interval (in seconds).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.ecs]
|
|
||||||
refreshSeconds = 15
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
ecs:
|
ecs:
|
||||||
|
@ -180,6 +174,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.ecs]
|
||||||
|
refreshSeconds = 15
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.ecs.refreshSeconds=15
|
--providers.ecs.refreshSeconds=15
|
||||||
# ...
|
# ...
|
||||||
|
@ -198,13 +198,6 @@ If `accessKeyID` and `secretAccessKey` are not provided, credentials are resolve
|
||||||
- Using shared credentials, determined by `AWS_PROFILE` and `AWS_SHARED_CREDENTIALS_FILE`, defaults to `default` and `~/.aws/credentials`.
|
- Using shared credentials, determined by `AWS_PROFILE` and `AWS_SHARED_CREDENTIALS_FILE`, defaults to `default` and `~/.aws/credentials`.
|
||||||
- Using EC2 instance role or ECS task role
|
- Using EC2 instance role or ECS task role
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.ecs]
|
|
||||||
region = "us-east-1"
|
|
||||||
accessKeyID = "abc"
|
|
||||||
secretAccessKey = "123"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
ecs:
|
ecs:
|
||||||
|
@ -214,6 +207,13 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.ecs]
|
||||||
|
region = "us-east-1"
|
||||||
|
accessKeyID = "abc"
|
||||||
|
secretAccessKey = "123"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.ecs.region="us-east-1"
|
--providers.ecs.region="us-east-1"
|
||||||
--providers.ecs.accessKeyID="abc"
|
--providers.ecs.accessKeyID="abc"
|
||||||
|
|
|
@ -17,11 +17,6 @@ _Required, Default="127.0.0.1:2379"_
|
||||||
|
|
||||||
Defines how to access etcd.
|
Defines how to access etcd.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.etcd]
|
|
||||||
endpoints = ["127.0.0.1:2379"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
etcd:
|
etcd:
|
||||||
|
@ -29,6 +24,11 @@ providers:
|
||||||
- "127.0.0.1:2379"
|
- "127.0.0.1:2379"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.etcd]
|
||||||
|
endpoints = ["127.0.0.1:2379"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.etcd.endpoints=127.0.0.1:2379
|
--providers.etcd.endpoints=127.0.0.1:2379
|
||||||
```
|
```
|
||||||
|
@ -39,17 +39,17 @@ _Required, Default="traefik"_
|
||||||
|
|
||||||
Defines the root key of the configuration.
|
Defines the root key of the configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.etcd]
|
|
||||||
rootKey = "traefik"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
etcd:
|
etcd:
|
||||||
rootKey: "traefik"
|
rootKey: "traefik"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.etcd]
|
||||||
|
rootKey = "traefik"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.etcd.rootkey=traefik
|
--providers.etcd.rootkey=traefik
|
||||||
```
|
```
|
||||||
|
@ -60,12 +60,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Defines a username with which to connect to etcd.
|
Defines a username with which to connect to etcd.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.etcd]
|
|
||||||
# ...
|
|
||||||
username = "foo"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
etcd:
|
etcd:
|
||||||
|
@ -73,6 +67,12 @@ providers:
|
||||||
usename: "foo"
|
usename: "foo"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.etcd]
|
||||||
|
# ...
|
||||||
|
username = "foo"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.etcd.username=foo
|
--providers.etcd.username=foo
|
||||||
```
|
```
|
||||||
|
@ -83,12 +83,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Defines a password with which to connect to etcd.
|
Defines a password with which to connect to etcd.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.etcd]
|
|
||||||
# ...
|
|
||||||
password = "bar"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
etcd:
|
etcd:
|
||||||
|
@ -96,6 +90,12 @@ providers:
|
||||||
password: "bar"
|
password: "bar"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.etcd]
|
||||||
|
# ...
|
||||||
|
password = "bar"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.etcd.password=foo
|
--providers.etcd.password=foo
|
||||||
```
|
```
|
||||||
|
@ -108,11 +108,6 @@ _Optional_
|
||||||
|
|
||||||
Certificate Authority used for the secure connection to etcd.
|
Certificate Authority used for the secure connection to etcd.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.etcd.tls]
|
|
||||||
ca = "path/to/ca.crt"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
etcd:
|
etcd:
|
||||||
|
@ -120,6 +115,11 @@ providers:
|
||||||
ca: path/to/ca.crt
|
ca: path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.etcd.tls]
|
||||||
|
ca = "path/to/ca.crt"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.etcd.tls.ca=path/to/ca.crt
|
--providers.etcd.tls.ca=path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -136,11 +136,6 @@ When this option is set to `true`, a client certificate is requested during the
|
||||||
|
|
||||||
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.etcd.tls]
|
|
||||||
caOptional = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
etcd:
|
etcd:
|
||||||
|
@ -148,6 +143,11 @@ providers:
|
||||||
caOptional: true
|
caOptional: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.etcd.tls]
|
||||||
|
caOptional = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.etcd.tls.caOptional=true
|
--providers.etcd.tls.caOptional=true
|
||||||
```
|
```
|
||||||
|
@ -156,12 +156,6 @@ providers:
|
||||||
|
|
||||||
Public certificate used for the secure connection to etcd.
|
Public certificate used for the secure connection to etcd.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.etcd.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
etcd:
|
etcd:
|
||||||
|
@ -170,6 +164,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.etcd.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.etcd.tls.cert=path/to/foo.cert
|
--providers.etcd.tls.cert=path/to/foo.cert
|
||||||
--providers.etcd.tls.key=path/to/foo.key
|
--providers.etcd.tls.key=path/to/foo.key
|
||||||
|
@ -179,12 +179,6 @@ providers:
|
||||||
|
|
||||||
Private certificate used for the secure connection to etcd.
|
Private certificate used for the secure connection to etcd.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.etcd.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
etcd:
|
etcd:
|
||||||
|
@ -193,6 +187,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.etcd.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.etcd.tls.cert=path/to/foo.cert
|
--providers.etcd.tls.cert=path/to/foo.cert
|
||||||
--providers.etcd.tls.key=path/to/foo.key
|
--providers.etcd.tls.key=path/to/foo.key
|
||||||
|
@ -202,11 +202,6 @@ providers:
|
||||||
|
|
||||||
If `insecureSkipVerify` is `true`, the TLS connection to etcd accepts any certificate presented by the server regardless of the hostnames it covers.
|
If `insecureSkipVerify` is `true`, the TLS connection to etcd accepts any certificate presented by the server regardless of the hostnames it covers.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.etcd.tls]
|
|
||||||
insecureSkipVerify = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
etcd:
|
etcd:
|
||||||
|
@ -214,6 +209,11 @@ providers:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.etcd.tls]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.etcd.tls.insecureSkipVerify=true
|
--providers.etcd.tls.insecureSkipVerify=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
Good Old Configuration File
|
Good Old Configuration File
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||
The file provider lets you define the [dynamic configuration](./overview.md) in a TOML or YAML file.
|
The file provider lets you define the [dynamic configuration](./overview.md) in a YAML or TOML file.
|
||||||
|
|
||||||
It supports providing configuration through a [single configuration file](#filename) or [multiple separate files](#directory).
|
It supports providing configuration through a [single configuration file](#filename) or [multiple separate files](#directory).
|
||||||
|
|
||||||
|
@ -21,50 +21,23 @@ It supports providing configuration through a [single configuration file](#filen
|
||||||
|
|
||||||
Enabling the file provider:
|
Enabling the file provider:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.file]
|
|
||||||
directory = "/path/to/dynamic/conf"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
file:
|
file:
|
||||||
directory: "/path/to/dynamic/conf"
|
directory: "/path/to/dynamic/conf"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.file]
|
||||||
|
directory = "/path/to/dynamic/conf"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.file.directory=/path/to/dynamic/conf
|
--providers.file.directory=/path/to/dynamic/conf
|
||||||
```
|
```
|
||||||
|
|
||||||
Declaring Routers, Middlewares & Services:
|
Declaring Routers, Middlewares & Services:
|
||||||
|
|
||||||
```toml tab="TOML"
|
|
||||||
[http]
|
|
||||||
# Add the router
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.router0]
|
|
||||||
entryPoints = ["web"]
|
|
||||||
middlewares = ["my-basic-auth"]
|
|
||||||
service = "service-foo"
|
|
||||||
rule = "Path(`/foo`)"
|
|
||||||
|
|
||||||
# Add the middleware
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.my-basic-auth.basicAuth]
|
|
||||||
users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
|
||||||
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"]
|
|
||||||
usersFile = "etc/traefik/.htpasswd"
|
|
||||||
|
|
||||||
# Add the service
|
|
||||||
[http.services]
|
|
||||||
[http.services.service-foo]
|
|
||||||
[http.services.service-foo.loadBalancer]
|
|
||||||
[[http.services.service-foo.loadBalancer.servers]]
|
|
||||||
url = "http://foo/"
|
|
||||||
[[http.services.service-foo.loadBalancer.servers]]
|
|
||||||
url = "http://bar/"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="YAML"
|
```yaml tab="YAML"
|
||||||
http:
|
http:
|
||||||
# Add the router
|
# Add the router
|
||||||
|
@ -96,6 +69,33 @@ It supports providing configuration through a [single configuration file](#filen
|
||||||
passHostHeader: false
|
passHostHeader: false
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="TOML"
|
||||||
|
[http]
|
||||||
|
# Add the router
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.router0]
|
||||||
|
entryPoints = ["web"]
|
||||||
|
middlewares = ["my-basic-auth"]
|
||||||
|
service = "service-foo"
|
||||||
|
rule = "Path(`/foo`)"
|
||||||
|
|
||||||
|
# Add the middleware
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.my-basic-auth.basicAuth]
|
||||||
|
users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/",
|
||||||
|
"test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"]
|
||||||
|
usersFile = "etc/traefik/.htpasswd"
|
||||||
|
|
||||||
|
# Add the service
|
||||||
|
[http.services]
|
||||||
|
[http.services.service-foo]
|
||||||
|
[http.services.service-foo.loadBalancer]
|
||||||
|
[[http.services.service-foo.loadBalancer.servers]]
|
||||||
|
url = "http://foo/"
|
||||||
|
[[http.services.service-foo.loadBalancer.servers]]
|
||||||
|
url = "http://bar/"
|
||||||
|
```
|
||||||
|
|
||||||
## Provider Configuration
|
## Provider Configuration
|
||||||
|
|
||||||
For an overview of all the options that can be set with the file provider, see the [dynamic configuration](../reference/dynamic-configuration/file.md) and [static configuration](../reference/static-configuration/overview.md) references.
|
For an overview of all the options that can be set with the file provider, see the [dynamic configuration](../reference/dynamic-configuration/file.md) and [static configuration](../reference/static-configuration/overview.md) references.
|
||||||
|
@ -125,20 +125,20 @@ Defines the path to the configuration file.
|
||||||
The `filename` and `directory` options are mutually exclusive.
|
The `filename` and `directory` options are mutually exclusive.
|
||||||
It is recommended to use `directory`.
|
It is recommended to use `directory`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers]
|
|
||||||
[providers.file]
|
|
||||||
filename = "/path/to/config/dynamic_conf.toml"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
file:
|
file:
|
||||||
filename: /path/to/config/dynamic_conf.yml
|
filename: /path/to/config/dynamic_conf.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers]
|
||||||
|
[providers.file]
|
||||||
|
filename = "/path/to/config/dynamic_conf.toml"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.file.filename=/path/to/config/dynamic_conf.toml
|
--providers.file.filename=/path/to/config/dynamic_conf.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
### `directory`
|
### `directory`
|
||||||
|
@ -150,18 +150,18 @@ Defines the path to the directory that contains the configuration files.
|
||||||
The `filename` and `directory` options are mutually exclusive.
|
The `filename` and `directory` options are mutually exclusive.
|
||||||
It is recommended to use `directory`.
|
It is recommended to use `directory`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers]
|
|
||||||
[providers.file]
|
|
||||||
directory = "/path/to/config"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
file:
|
file:
|
||||||
directory: /path/to/config
|
directory: /path/to/config
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers]
|
||||||
|
[providers.file]
|
||||||
|
directory = "/path/to/config"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.file.directory=/path/to/config
|
--providers.file.directory=/path/to/config
|
||||||
```
|
```
|
||||||
|
@ -171,13 +171,6 @@ providers:
|
||||||
Set the `watch` option to `true` to allow Traefik to automatically watch for file changes.
|
Set the `watch` option to `true` to allow Traefik to automatically watch for file changes.
|
||||||
It works with both the `filename` and the `directory` options.
|
It works with both the `filename` and the `directory` options.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers]
|
|
||||||
[providers.file]
|
|
||||||
directory = "/path/to/dynamic/conf"
|
|
||||||
watch = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
file:
|
file:
|
||||||
|
@ -185,6 +178,13 @@ providers:
|
||||||
watch: true
|
watch: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers]
|
||||||
|
[providers.file]
|
||||||
|
directory = "/path/to/dynamic/conf"
|
||||||
|
watch = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.file.directory=/my/path/to/dynamic/conf
|
--providers.file.directory=/my/path/to/dynamic/conf
|
||||||
--providers.file.watch=true
|
--providers.file.watch=true
|
||||||
|
@ -205,6 +205,44 @@ To illustrate, it is possible to easily define multiple routers, services, and T
|
||||||
|
|
||||||
??? example "Configuring Using Templating"
|
??? example "Configuring Using Templating"
|
||||||
|
|
||||||
|
```yaml tab="YAML"
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
{{range $i, $e := until 100 }}
|
||||||
|
router{{ $e }}-{{ env "MY_ENV_VAR" }}:
|
||||||
|
# ...
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
services:
|
||||||
|
{{range $i, $e := until 100 }}
|
||||||
|
application{{ $e }}:
|
||||||
|
# ...
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
tcp:
|
||||||
|
routers:
|
||||||
|
{{range $i, $e := until 100 }}
|
||||||
|
router{{ $e }}:
|
||||||
|
# ...
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
services:
|
||||||
|
{{range $i, $e := until 100 }}
|
||||||
|
service{{ $e }}:
|
||||||
|
# ...
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
tls:
|
||||||
|
certificates:
|
||||||
|
{{ range $i, $e := until 10 }}
|
||||||
|
- certFile: "/etc/traefik/cert-{{ $e }}.pem"
|
||||||
|
keyFile: "/etc/traefik/cert-{{ $e }}.key"
|
||||||
|
store:
|
||||||
|
- "my-store-foo-{{ $e }}"
|
||||||
|
- "my-store-bar-{{ $e }}"
|
||||||
|
{{end}}
|
||||||
|
```
|
||||||
|
|
||||||
```toml tab="TOML"
|
```toml tab="TOML"
|
||||||
# template-rules.toml
|
# template-rules.toml
|
||||||
[http]
|
[http]
|
||||||
|
@ -248,41 +286,3 @@ To illustrate, it is possible to easily define multiple routers, services, and T
|
||||||
# ...
|
# ...
|
||||||
{{ end }}
|
{{ end }}
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="YAML"
|
|
||||||
http:
|
|
||||||
routers:
|
|
||||||
{{range $i, $e := until 100 }}
|
|
||||||
router{{ $e }}-{{ env "MY_ENV_VAR" }}:
|
|
||||||
# ...
|
|
||||||
{{end}}
|
|
||||||
|
|
||||||
services:
|
|
||||||
{{range $i, $e := until 100 }}
|
|
||||||
application{{ $e }}:
|
|
||||||
# ...
|
|
||||||
{{end}}
|
|
||||||
|
|
||||||
tcp:
|
|
||||||
routers:
|
|
||||||
{{range $i, $e := until 100 }}
|
|
||||||
router{{ $e }}:
|
|
||||||
# ...
|
|
||||||
{{end}}
|
|
||||||
|
|
||||||
services:
|
|
||||||
{{range $i, $e := until 100 }}
|
|
||||||
service{{ $e }}:
|
|
||||||
# ...
|
|
||||||
{{end}}
|
|
||||||
|
|
||||||
tls:
|
|
||||||
certificates:
|
|
||||||
{{ range $i, $e := until 10 }}
|
|
||||||
- certFile: "/etc/traefik/cert-{{ $e }}.pem"
|
|
||||||
keyFile: "/etc/traefik/cert-{{ $e }}.key"
|
|
||||||
store:
|
|
||||||
- "my-store-foo-{{ $e }}"
|
|
||||||
- "my-store-bar-{{ $e }}"
|
|
||||||
{{end}}
|
|
||||||
```
|
|
||||||
|
|
|
@ -14,11 +14,6 @@ _Required_
|
||||||
|
|
||||||
Defines the HTTP(S) endpoint to poll.
|
Defines the HTTP(S) endpoint to poll.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.http]
|
|
||||||
endpoint = "http://127.0.0.1:9000/api"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
http:
|
http:
|
||||||
|
@ -26,6 +21,11 @@ providers:
|
||||||
- "http://127.0.0.1:9000/api"
|
- "http://127.0.0.1:9000/api"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.http]
|
||||||
|
endpoint = "http://127.0.0.1:9000/api"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.http.endpoint=http://127.0.0.1:9000/api
|
--providers.http.endpoint=http://127.0.0.1:9000/api
|
||||||
```
|
```
|
||||||
|
@ -36,17 +36,17 @@ _Optional, Default="5s"_
|
||||||
|
|
||||||
Defines the polling interval.
|
Defines the polling interval.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.http]
|
|
||||||
pollInterval = "5s"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
http:
|
http:
|
||||||
pollInterval: "5s"
|
pollInterval: "5s"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.http]
|
||||||
|
pollInterval = "5s"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.http.pollInterval=5s
|
--providers.http.pollInterval=5s
|
||||||
```
|
```
|
||||||
|
@ -57,17 +57,17 @@ _Optional, Default="5s"_
|
||||||
|
|
||||||
Defines the polling timeout when connecting to the configured endpoint.
|
Defines the polling timeout when connecting to the configured endpoint.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.http]
|
|
||||||
pollTimeout = "5s"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
http:
|
http:
|
||||||
pollTimeout: "5s"
|
pollTimeout: "5s"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.http]
|
||||||
|
pollTimeout = "5s"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.http.pollTimeout=5s
|
--providers.http.pollTimeout=5s
|
||||||
```
|
```
|
||||||
|
@ -80,11 +80,6 @@ _Optional_
|
||||||
|
|
||||||
Certificate Authority used for the secure connection to the configured endpoint.
|
Certificate Authority used for the secure connection to the configured endpoint.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.http.tls]
|
|
||||||
ca = "path/to/ca.crt"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
http:
|
http:
|
||||||
|
@ -92,6 +87,11 @@ providers:
|
||||||
ca: path/to/ca.crt
|
ca: path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.http.tls]
|
||||||
|
ca = "path/to/ca.crt"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.http.tls.ca=path/to/ca.crt
|
--providers.http.tls.ca=path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -108,11 +108,6 @@ When this option is set to `true`, a client certificate is requested during the
|
||||||
|
|
||||||
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.http.tls]
|
|
||||||
caOptional = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
http:
|
http:
|
||||||
|
@ -120,6 +115,11 @@ providers:
|
||||||
caOptional: true
|
caOptional: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.http.tls]
|
||||||
|
caOptional = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.http.tls.caOptional=true
|
--providers.http.tls.caOptional=true
|
||||||
```
|
```
|
||||||
|
@ -128,12 +128,6 @@ providers:
|
||||||
|
|
||||||
Public certificate used for the secure connection to the configured endpoint.
|
Public certificate used for the secure connection to the configured endpoint.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.http.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
http:
|
http:
|
||||||
|
@ -142,6 +136,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.http.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.http.tls.cert=path/to/foo.cert
|
--providers.http.tls.cert=path/to/foo.cert
|
||||||
--providers.http.tls.key=path/to/foo.key
|
--providers.http.tls.key=path/to/foo.key
|
||||||
|
@ -151,12 +151,6 @@ providers:
|
||||||
|
|
||||||
Private certificate used for the secure connection to the configured endpoint.
|
Private certificate used for the secure connection to the configured endpoint.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.http.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
http:
|
http:
|
||||||
|
@ -165,6 +159,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.http.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.http.tls.cert=path/to/foo.cert
|
--providers.http.tls.cert=path/to/foo.cert
|
||||||
--providers.http.tls.key=path/to/foo.key
|
--providers.http.tls.key=path/to/foo.key
|
||||||
|
@ -174,11 +174,6 @@ providers:
|
||||||
|
|
||||||
If `insecureSkipVerify` is `true`, the TLS connection to the endpoint accepts any certificate presented by the server regardless of the hostnames it covers.
|
If `insecureSkipVerify` is `true`, the TLS connection to the endpoint accepts any certificate presented by the server regardless of the hostnames it covers.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.http.tls]
|
|
||||||
insecureSkipVerify = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
http:
|
http:
|
||||||
|
@ -186,6 +181,11 @@ providers:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.http.tls]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.http.tls.insecureSkipVerify=true
|
--providers.http.tls.insecureSkipVerify=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -87,12 +87,6 @@ When the environment variables are not found, Traefik tries to connect to the Ku
|
||||||
In this case, the endpoint is required.
|
In this case, the endpoint is required.
|
||||||
Specifically, it may be set to the URL used by `kubectl proxy` to connect to a Kubernetes cluster using the granted authentication and authorization of the associated kubeconfig.
|
Specifically, it may be set to the URL used by `kubectl proxy` to connect to a Kubernetes cluster using the granted authentication and authorization of the associated kubeconfig.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesCRD]
|
|
||||||
endpoint = "http://localhost:8080"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesCRD:
|
kubernetesCRD:
|
||||||
|
@ -100,6 +94,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesCRD]
|
||||||
|
endpoint = "http://localhost:8080"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetescrd.endpoint=http://localhost:8080
|
--providers.kubernetescrd.endpoint=http://localhost:8080
|
||||||
```
|
```
|
||||||
|
@ -110,12 +110,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Bearer token used for the Kubernetes client configuration.
|
Bearer token used for the Kubernetes client configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesCRD]
|
|
||||||
token = "mytoken"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesCRD:
|
kubernetesCRD:
|
||||||
|
@ -123,6 +117,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesCRD]
|
||||||
|
token = "mytoken"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetescrd.token=mytoken
|
--providers.kubernetescrd.token=mytoken
|
||||||
```
|
```
|
||||||
|
@ -134,12 +134,6 @@ _Optional, Default=""_
|
||||||
Path to the certificate authority file.
|
Path to the certificate authority file.
|
||||||
Used for the Kubernetes client configuration.
|
Used for the Kubernetes client configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesCRD]
|
|
||||||
certAuthFilePath = "/my/ca.crt"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesCRD:
|
kubernetesCRD:
|
||||||
|
@ -147,6 +141,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesCRD]
|
||||||
|
certAuthFilePath = "/my/ca.crt"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetescrd.certauthfilepath=/my/ca.crt
|
--providers.kubernetescrd.certauthfilepath=/my/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -158,12 +158,6 @@ _Optional, Default: []_
|
||||||
Array of namespaces to watch.
|
Array of namespaces to watch.
|
||||||
If left empty, watches all namespaces if the value of `namespaces`.
|
If left empty, watches all namespaces if the value of `namespaces`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesCRD]
|
|
||||||
namespaces = ["default", "production"]
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesCRD:
|
kubernetesCRD:
|
||||||
|
@ -173,6 +167,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesCRD]
|
||||||
|
namespaces = ["default", "production"]
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetescrd.namespaces=default,production
|
--providers.kubernetescrd.namespaces=default,production
|
||||||
```
|
```
|
||||||
|
@ -192,12 +192,6 @@ See [label-selectors](https://kubernetes.io/docs/concepts/overview/working-with-
|
||||||
|
|
||||||
Because the label selector is applied to all Traefik Custom Resources, they all must match the filter.
|
Because the label selector is applied to all Traefik Custom Resources, they all must match the filter.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesCRD]
|
|
||||||
labelselector = "app=traefik"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesCRD:
|
kubernetesCRD:
|
||||||
|
@ -205,6 +199,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesCRD]
|
||||||
|
labelselector = "app=traefik"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetescrd.labelselector="app=traefik"
|
--providers.kubernetescrd.labelselector="app=traefik"
|
||||||
```
|
```
|
||||||
|
@ -218,12 +218,6 @@ Value of `kubernetes.io/ingress.class` annotation that identifies resource objec
|
||||||
If the parameter is set, only resources containing an annotation with the same value are processed.
|
If the parameter is set, only resources containing an annotation with the same value are processed.
|
||||||
Otherwise, resources missing the annotation, having an empty value, or the value `traefik` are processed.
|
Otherwise, resources missing the annotation, having an empty value, or the value `traefik` are processed.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesCRD]
|
|
||||||
ingressClass = "traefik-internal"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesCRD:
|
kubernetesCRD:
|
||||||
|
@ -231,6 +225,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesCRD]
|
||||||
|
ingressClass = "traefik-internal"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetescrd.ingressclass=traefik-internal
|
--providers.kubernetescrd.ingressclass=traefik-internal
|
||||||
```
|
```
|
||||||
|
@ -247,12 +247,6 @@ If left empty, the provider does not apply any throttling and does not drop any
|
||||||
The value of `throttleDuration` should be provided in seconds or as a valid duration format,
|
The value of `throttleDuration` should be provided in seconds or as a valid duration format,
|
||||||
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesCRD]
|
|
||||||
throttleDuration = "10s"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesCRD:
|
kubernetesCRD:
|
||||||
|
@ -260,6 +254,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesCRD]
|
||||||
|
throttleDuration = "10s"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetescrd.throttleDuration=10s
|
--providers.kubernetescrd.throttleDuration=10s
|
||||||
```
|
```
|
||||||
|
@ -274,12 +274,6 @@ If the parameter is set to `false`, IngressRoutes are not able to reference any
|
||||||
|
|
||||||
Please note that the default value for this option will be set to `false` in a future version.
|
Please note that the default value for this option will be set to `false` in a future version.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesCRD]
|
|
||||||
allowCrossNamespace = false
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesCRD:
|
kubernetesCRD:
|
||||||
|
@ -287,6 +281,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesCRD]
|
||||||
|
allowCrossNamespace = false
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetescrd.allowCrossNamespace=false
|
--providers.kubernetescrd.allowCrossNamespace=false
|
||||||
```
|
```
|
||||||
|
|
|
@ -15,14 +15,6 @@ This provider is proposed as an experimental feature and partially supports the
|
||||||
|
|
||||||
Since this provider is still experimental, it needs to be activated in the experimental section of the static configuration.
|
Since this provider is still experimental, it needs to be activated in the experimental section of the static configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[experimental]
|
|
||||||
kubernetesGateway = true
|
|
||||||
|
|
||||||
[providers.kubernetesGateway]
|
|
||||||
#...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
experimental:
|
experimental:
|
||||||
kubernetesGateway: true
|
kubernetesGateway: true
|
||||||
|
@ -32,6 +24,14 @@ This provider is proposed as an experimental feature and partially supports the
|
||||||
#...
|
#...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[experimental]
|
||||||
|
kubernetesGateway = true
|
||||||
|
|
||||||
|
[providers.kubernetesGateway]
|
||||||
|
#...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--experimental.kubernetesgateway=true --providers.kubernetesgateway=true #...
|
--experimental.kubernetesgateway=true --providers.kubernetesgateway=true #...
|
||||||
```
|
```
|
||||||
|
@ -119,12 +119,6 @@ When the environment variables are not found, Traefik tries to connect to the Ku
|
||||||
In this case, the endpoint is required.
|
In this case, the endpoint is required.
|
||||||
Specifically, it may be set to the URL used by `kubectl proxy` to connect to a Kubernetes cluster using the granted authentication and authorization of the associated kubeconfig.
|
Specifically, it may be set to the URL used by `kubectl proxy` to connect to a Kubernetes cluster using the granted authentication and authorization of the associated kubeconfig.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesGateway]
|
|
||||||
endpoint = "http://localhost:8080"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesGateway:
|
kubernetesGateway:
|
||||||
|
@ -132,6 +126,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesGateway]
|
||||||
|
endpoint = "http://localhost:8080"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesgateway.endpoint=http://localhost:8080
|
--providers.kubernetesgateway.endpoint=http://localhost:8080
|
||||||
```
|
```
|
||||||
|
@ -142,12 +142,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Bearer token used for the Kubernetes client configuration.
|
Bearer token used for the Kubernetes client configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesGateway]
|
|
||||||
token = "mytoken"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesGateway:
|
kubernetesGateway:
|
||||||
|
@ -155,6 +149,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesGateway]
|
||||||
|
token = "mytoken"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesgateway.token=mytoken
|
--providers.kubernetesgateway.token=mytoken
|
||||||
```
|
```
|
||||||
|
@ -166,12 +166,6 @@ _Optional, Default=""_
|
||||||
Path to the certificate authority file.
|
Path to the certificate authority file.
|
||||||
Used for the Kubernetes client configuration.
|
Used for the Kubernetes client configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesGateway]
|
|
||||||
certAuthFilePath = "/my/ca.crt"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesGateway:
|
kubernetesGateway:
|
||||||
|
@ -179,6 +173,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesGateway]
|
||||||
|
certAuthFilePath = "/my/ca.crt"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesgateway.certauthfilepath=/my/ca.crt
|
--providers.kubernetesgateway.certauthfilepath=/my/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -190,12 +190,6 @@ _Optional, Default: []_
|
||||||
Array of namespaces to watch.
|
Array of namespaces to watch.
|
||||||
If left empty, watches all namespaces if the value of `namespaces`.
|
If left empty, watches all namespaces if the value of `namespaces`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesGateway]
|
|
||||||
namespaces = ["default", "production"]
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesGateway:
|
kubernetesGateway:
|
||||||
|
@ -205,6 +199,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesGateway]
|
||||||
|
namespaces = ["default", "production"]
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesgateway.namespaces=default,production
|
--providers.kubernetesgateway.namespaces=default,production
|
||||||
```
|
```
|
||||||
|
@ -218,12 +218,6 @@ If left empty, Traefik processes all GatewayClass objects in the configured name
|
||||||
|
|
||||||
See [label-selectors](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors) for details.
|
See [label-selectors](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors) for details.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesGateway]
|
|
||||||
labelselector = "app=traefik"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesGateway:
|
kubernetesGateway:
|
||||||
|
@ -231,6 +225,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesGateway]
|
||||||
|
labelselector = "app=traefik"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesgateway.labelselector="app=traefik"
|
--providers.kubernetesgateway.labelselector="app=traefik"
|
||||||
```
|
```
|
||||||
|
@ -247,12 +247,6 @@ If left empty, the provider does not apply any throttling and does not drop any
|
||||||
The value of `throttleDuration` should be provided in seconds or as a valid duration format,
|
The value of `throttleDuration` should be provided in seconds or as a valid duration format,
|
||||||
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesGateway]
|
|
||||||
throttleDuration = "10s"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesGateway:
|
kubernetesGateway:
|
||||||
|
@ -260,6 +254,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesGateway]
|
||||||
|
throttleDuration = "10s"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesgateway.throttleDuration=10s
|
--providers.kubernetesgateway.throttleDuration=10s
|
||||||
```
|
```
|
||||||
|
|
|
@ -18,15 +18,15 @@ See the dedicated section in [routing](../routing/providers/kubernetes-ingress.m
|
||||||
|
|
||||||
You can enable the provider in the static configuration:
|
You can enable the provider in the static configuration:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress: {}
|
kubernetesIngress: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress=true
|
--providers.kubernetesingress=true
|
||||||
```
|
```
|
||||||
|
@ -125,12 +125,6 @@ When the environment variables are not found, Traefik tries to connect to the Ku
|
||||||
In this case, the endpoint is required.
|
In this case, the endpoint is required.
|
||||||
Specifically, it may be set to the URL used by `kubectl proxy` to connect to a Kubernetes cluster using the granted authentication and authorization of the associated kubeconfig.
|
Specifically, it may be set to the URL used by `kubectl proxy` to connect to a Kubernetes cluster using the granted authentication and authorization of the associated kubeconfig.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
endpoint = "http://localhost:8080"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -138,6 +132,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress]
|
||||||
|
endpoint = "http://localhost:8080"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.endpoint=http://localhost:8080
|
--providers.kubernetesingress.endpoint=http://localhost:8080
|
||||||
```
|
```
|
||||||
|
@ -148,12 +148,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Bearer token used for the Kubernetes client configuration.
|
Bearer token used for the Kubernetes client configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
token = "mytoken"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -161,6 +155,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress]
|
||||||
|
token = "mytoken"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.token=mytoken
|
--providers.kubernetesingress.token=mytoken
|
||||||
```
|
```
|
||||||
|
@ -172,12 +172,6 @@ _Optional, Default=""_
|
||||||
Path to the certificate authority file.
|
Path to the certificate authority file.
|
||||||
Used for the Kubernetes client configuration.
|
Used for the Kubernetes client configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
certAuthFilePath = "/my/ca.crt"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -185,6 +179,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress]
|
||||||
|
certAuthFilePath = "/my/ca.crt"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.certauthfilepath=/my/ca.crt
|
--providers.kubernetesingress.certauthfilepath=/my/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -196,12 +196,6 @@ _Optional, Default: []_
|
||||||
Array of namespaces to watch.
|
Array of namespaces to watch.
|
||||||
If left empty, watches all namespaces if the value of `namespaces`.
|
If left empty, watches all namespaces if the value of `namespaces`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
namespaces = ["default", "production"]
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -211,6 +205,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress]
|
||||||
|
namespaces = ["default", "production"]
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.namespaces=default,production
|
--providers.kubernetesingress.namespaces=default,production
|
||||||
```
|
```
|
||||||
|
@ -224,12 +224,6 @@ If left empty, Traefik processes all Ingress objects in the configured namespace
|
||||||
|
|
||||||
See [label-selectors](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors) for details.
|
See [label-selectors](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors) for details.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
labelSelector = "app=traefik"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -237,6 +231,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress]
|
||||||
|
labelSelector = "app=traefik"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.labelselector="app=traefik"
|
--providers.kubernetesingress.labelselector="app=traefik"
|
||||||
```
|
```
|
||||||
|
@ -319,12 +319,6 @@ Otherwise, Ingresses missing the annotation, having an empty value, or the value
|
||||||
number: 80
|
number: 80
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
ingressClass = "traefik-internal"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -332,6 +326,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress]
|
||||||
|
ingressClass = "traefik-internal"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.ingressclass=traefik-internal
|
--providers.kubernetesingress.ingressclass=traefik-internal
|
||||||
```
|
```
|
||||||
|
@ -344,12 +344,6 @@ _Optional, Default: ""_
|
||||||
|
|
||||||
Hostname used for Kubernetes Ingress endpoints.
|
Hostname used for Kubernetes Ingress endpoints.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress.ingressEndpoint]
|
|
||||||
hostname = "example.net"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -358,6 +352,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress.ingressEndpoint]
|
||||||
|
hostname = "example.net"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.ingressendpoint.hostname=example.net
|
--providers.kubernetesingress.ingressendpoint.hostname=example.net
|
||||||
```
|
```
|
||||||
|
@ -368,12 +368,6 @@ _Optional, Default: ""_
|
||||||
|
|
||||||
IP used for Kubernetes Ingress endpoints.
|
IP used for Kubernetes Ingress endpoints.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress.ingressEndpoint]
|
|
||||||
ip = "1.2.3.4"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -382,6 +376,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress.ingressEndpoint]
|
||||||
|
ip = "1.2.3.4"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.ingressendpoint.ip=1.2.3.4
|
--providers.kubernetesingress.ingressendpoint.ip=1.2.3.4
|
||||||
```
|
```
|
||||||
|
@ -393,12 +393,6 @@ _Optional, Default: ""_
|
||||||
Published Kubernetes Service to copy status from.
|
Published Kubernetes Service to copy status from.
|
||||||
Format: `namespace/servicename`.
|
Format: `namespace/servicename`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress.ingressEndpoint]
|
|
||||||
publishedService = "namespace/foo-service"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -407,6 +401,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress.ingressEndpoint]
|
||||||
|
publishedService = "namespace/foo-service"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.ingressendpoint.publishedservice=namespace/foo-service
|
--providers.kubernetesingress.ingressendpoint.publishedservice=namespace/foo-service
|
||||||
```
|
```
|
||||||
|
@ -423,12 +423,6 @@ If left empty, the provider does not apply any throttling and does not drop any
|
||||||
The value of `throttleDuration` should be provided in seconds or as a valid duration format,
|
The value of `throttleDuration` should be provided in seconds or as a valid duration format,
|
||||||
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
throttleDuration = "10s"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -436,6 +430,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress]
|
||||||
|
throttleDuration = "10s"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.throttleDuration=10s
|
--providers.kubernetesingress.throttleDuration=10s
|
||||||
```
|
```
|
||||||
|
@ -444,12 +444,6 @@ providers:
|
||||||
|
|
||||||
_Optional, Default: false
|
_Optional, Default: false
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
allowEmptyServices = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
kubernetesIngress:
|
kubernetesIngress:
|
||||||
|
@ -457,6 +451,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.kubernetesIngress]
|
||||||
|
allowEmptyServices = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.kubernetesingress.allowEmptyServices=true
|
--providers.kubernetesingress.allowEmptyServices=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -11,15 +11,15 @@ For additional information, refer to [Marathon user guide](../user-guides/marath
|
||||||
|
|
||||||
Enabling the Marathon provider
|
Enabling the Marathon provider
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon: {}
|
marathon: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon=true
|
--providers.marathon=true
|
||||||
```
|
```
|
||||||
|
@ -61,12 +61,6 @@ _Optional_
|
||||||
|
|
||||||
Enables Marathon basic authentication.
|
Enables Marathon basic authentication.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon.basic]
|
|
||||||
httpBasicAuthUser = "foo"
|
|
||||||
httpBasicPassword = "bar"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -75,6 +69,12 @@ providers:
|
||||||
httpBasicPassword: bar
|
httpBasicPassword: bar
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon.basic]
|
||||||
|
httpBasicAuthUser = "foo"
|
||||||
|
httpBasicPassword = "bar"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.basic.httpbasicauthuser=foo
|
--providers.marathon.basic.httpbasicauthuser=foo
|
||||||
--providers.marathon.basic.httpbasicpassword=bar
|
--providers.marathon.basic.httpbasicpassword=bar
|
||||||
|
@ -88,12 +88,6 @@ Datacenter Operating System (DCOS) Token for DCOS environment.
|
||||||
|
|
||||||
If set, it overrides the Authorization header.
|
If set, it overrides the Authorization header.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
dcosToken = "xxxxxx"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```toml tab="File (YAML)"
|
```toml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -101,6 +95,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
dcosToken = "xxxxxx"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.dcosToken=xxxxxx
|
--providers.marathon.dcosToken=xxxxxx
|
||||||
```
|
```
|
||||||
|
@ -119,12 +119,6 @@ and can include [sprig template functions](http://masterminds.github.io/sprig/).
|
||||||
The app ID can be accessed with the `Name` identifier,
|
The app ID can be accessed with the `Name` identifier,
|
||||||
and the template has access to all the labels defined on this Marathon application.
|
and the template has access to all the labels defined on this Marathon application.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
defaultRule = "Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -132,6 +126,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
defaultRule = "Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.defaultRule=Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)
|
--providers.marathon.defaultRule=Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)
|
||||||
# ...
|
# ...
|
||||||
|
@ -147,19 +147,19 @@ when trying to open a TCP connection to a Marathon master.
|
||||||
The value of `dialerTimeout` should be provided in seconds or as a valid duration format,
|
The value of `dialerTimeout` should be provided in seconds or as a valid duration format,
|
||||||
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```yaml tab="File (YAML)"
|
||||||
[providers.marathon]
|
|
||||||
dialerTimeout = "10s"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```toml tab="File (YAML)"
|
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
dialerTimeout: "10s"
|
dialerTimeout: "10s"
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
dialerTimeout = "10s"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.dialerTimeout=10s
|
--providers.marathon.dialerTimeout=10s
|
||||||
```
|
```
|
||||||
|
@ -172,19 +172,19 @@ Marathon server endpoint.
|
||||||
|
|
||||||
You can optionally specify multiple endpoints.
|
You can optionally specify multiple endpoints.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```yaml tab="File (YAML)"
|
||||||
[providers.marathon]
|
|
||||||
endpoint = "http://10.241.1.71:8080,10.241.1.72:8080,10.241.1.73:8080"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```toml tab="File (YAML)"
|
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
endpoint: "http://10.241.1.71:8080,10.241.1.72:8080,10.241.1.73:8080"
|
endpoint: "http://10.241.1.71:8080,10.241.1.72:8080,10.241.1.73:8080"
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
endpoint = "http://10.241.1.71:8080,10.241.1.72:8080,10.241.1.73:8080"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.endpoint=http://10.241.1.71:8080,10.241.1.72:8080,10.241.1.73:8080
|
--providers.marathon.endpoint=http://10.241.1.71:8080,10.241.1.72:8080,10.241.1.73:8080
|
||||||
```
|
```
|
||||||
|
@ -199,12 +199,6 @@ If set to `false`, applications that do not have a `traefik.enable=true` label a
|
||||||
|
|
||||||
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
exposedByDefault = false
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -212,6 +206,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
exposedByDefault = false
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.exposedByDefault=false
|
--providers.marathon.exposedByDefault=false
|
||||||
# ...
|
# ...
|
||||||
|
@ -274,12 +274,6 @@ In addition, to match against Marathon constraints, the function `MarathonConstr
|
||||||
|
|
||||||
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
constraints = "Label(`a.label.name`,`foo`)"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -287,6 +281,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
constraints = "Label(`a.label.name`,`foo`)"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.constraints=Label(`a.label.name`,`foo`)
|
--providers.marathon.constraints=Label(`a.label.name`,`foo`)
|
||||||
# ...
|
# ...
|
||||||
|
@ -300,12 +300,6 @@ By default, the task IP address (as returned by the Marathon API) is used as bac
|
||||||
otherwise, the name of the host running the task is used.
|
otherwise, the name of the host running the task is used.
|
||||||
The latter behavior can be enforced by setting this option to `true`.
|
The latter behavior can be enforced by setting this option to `true`.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
forceTaskHostname = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -313,6 +307,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
forceTaskHostname = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.forceTaskHostname=true
|
--providers.marathon.forceTaskHostname=true
|
||||||
# ...
|
# ...
|
||||||
|
@ -326,12 +326,6 @@ Set the TCP Keep Alive duration for the Marathon HTTP Client.
|
||||||
The value of `keepAlive` should be provided in seconds or as a valid duration format,
|
The value of `keepAlive` should be provided in seconds or as a valid duration format,
|
||||||
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
keepAlive = "30s"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -339,6 +333,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
keepAlive = "30s"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.keepAlive=30s
|
--providers.marathon.keepAlive=30s
|
||||||
# ...
|
# ...
|
||||||
|
@ -354,12 +354,6 @@ Note that the checks are only valid during deployments.
|
||||||
|
|
||||||
See the Marathon guide for details.
|
See the Marathon guide for details.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
respectReadinessChecks = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -367,6 +361,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
respectReadinessChecks = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.respectReadinessChecks=true
|
--providers.marathon.respectReadinessChecks=true
|
||||||
# ...
|
# ...
|
||||||
|
@ -382,12 +382,6 @@ from a Marathon master.
|
||||||
The value of `responseHeaderTimeout` should be provided in seconds or as a valid duration format,
|
The value of `responseHeaderTimeout` should be provided in seconds or as a valid duration format,
|
||||||
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
responseHeaderTimeout = "66s"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -395,6 +389,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
responseHeaderTimeout = "66s"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.responseHeaderTimeout=66s
|
--providers.marathon.responseHeaderTimeout=66s
|
||||||
# ...
|
# ...
|
||||||
|
@ -408,11 +408,6 @@ _Optional_
|
||||||
|
|
||||||
Certificate Authority used for the secure connection to Marathon.
|
Certificate Authority used for the secure connection to Marathon.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon.tls]
|
|
||||||
ca = "path/to/ca.crt"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -420,6 +415,11 @@ providers:
|
||||||
ca: path/to/ca.crt
|
ca: path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon.tls]
|
||||||
|
ca = "path/to/ca.crt"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.tls.ca=path/to/ca.crt
|
--providers.marathon.tls.ca=path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -436,11 +436,6 @@ When this option is set to `true`, a client certificate is requested during the
|
||||||
|
|
||||||
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon.tls]
|
|
||||||
caOptional = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -448,6 +443,11 @@ providers:
|
||||||
caOptional: true
|
caOptional: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon.tls]
|
||||||
|
caOptional = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.tls.caOptional=true
|
--providers.marathon.tls.caOptional=true
|
||||||
```
|
```
|
||||||
|
@ -456,12 +456,6 @@ providers:
|
||||||
|
|
||||||
Public certificate used for the secure connection to Marathon.
|
Public certificate used for the secure connection to Marathon.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -470,6 +464,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.tls.cert=path/to/foo.cert
|
--providers.marathon.tls.cert=path/to/foo.cert
|
||||||
--providers.marathon.tls.key=path/to/foo.key
|
--providers.marathon.tls.key=path/to/foo.key
|
||||||
|
@ -479,12 +479,6 @@ providers:
|
||||||
|
|
||||||
Private certificate used for the secure connection to Marathon.
|
Private certificate used for the secure connection to Marathon.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -493,6 +487,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.tls.cert=path/to/foo.cert
|
--providers.marathon.tls.cert=path/to/foo.cert
|
||||||
--providers.marathon.tls.key=path/to/foo.key
|
--providers.marathon.tls.key=path/to/foo.key
|
||||||
|
@ -502,11 +502,6 @@ providers:
|
||||||
|
|
||||||
If `insecureSkipVerify` is `true`, the TLS connection to Marathon accepts any certificate presented by the server regardless of the hostnames it covers.
|
If `insecureSkipVerify` is `true`, the TLS connection to Marathon accepts any certificate presented by the server regardless of the hostnames it covers.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon.tls]
|
|
||||||
insecureSkipVerify = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -514,6 +509,11 @@ providers:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon.tls]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.tls.insecureSkipVerify=true
|
--providers.marathon.tls.insecureSkipVerify=true
|
||||||
```
|
```
|
||||||
|
@ -528,12 +528,6 @@ when waiting for the TLS handshake to complete.
|
||||||
The value of `tlsHandshakeTimeout` should be provided in seconds or as a valid duration format,
|
The value of `tlsHandshakeTimeout` should be provided in seconds or as a valid duration format,
|
||||||
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
responseHeaderTimeout = "10s"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -541,6 +535,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
responseHeaderTimeout = "10s"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.responseHeaderTimeout=10s
|
--providers.marathon.responseHeaderTimeout=10s
|
||||||
# ...
|
# ...
|
||||||
|
@ -552,12 +552,6 @@ _Optional, Default=false_
|
||||||
|
|
||||||
Displays additional provider logs when available.
|
Displays additional provider logs when available.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
trace = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -565,6 +559,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
trace = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.trace=true
|
--providers.marathon.trace=true
|
||||||
# ...
|
# ...
|
||||||
|
@ -576,12 +576,6 @@ _Optional, Default=true_
|
||||||
|
|
||||||
When set to `true`, watches for Marathon changes.
|
When set to `true`, watches for Marathon changes.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.marathon]
|
|
||||||
watch = false
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
marathon:
|
marathon:
|
||||||
|
@ -589,6 +583,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.marathon]
|
||||||
|
watch = false
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.marathon.watch=false
|
--providers.marathon.watch=false
|
||||||
# ...
|
# ...
|
||||||
|
|
|
@ -49,12 +49,6 @@ separator, and the provider name.
|
||||||
|
|
||||||
Declaring the add-foo-prefix in the file provider.
|
Declaring the add-foo-prefix in the file provider.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[http.middlewares]
|
|
||||||
[http.middlewares.add-foo-prefix.addPrefix]
|
|
||||||
prefix = "/foo"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
|
@ -63,6 +57,12 @@ separator, and the provider name.
|
||||||
prefix: "/foo"
|
prefix: "/foo"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[http.middlewares]
|
||||||
|
[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"
|
||||||
|
@ -133,7 +133,7 @@ Below is the list of the currently supported providers in Traefik.
|
||||||
| [ECS](./ecs.md) | Orchestrator | Label |
|
| [ECS](./ecs.md) | Orchestrator | Label |
|
||||||
| [Marathon](./marathon.md) | Orchestrator | Label |
|
| [Marathon](./marathon.md) | Orchestrator | Label |
|
||||||
| [Rancher](./rancher.md) | Orchestrator | Label |
|
| [Rancher](./rancher.md) | Orchestrator | Label |
|
||||||
| [File](./file.md) | Manual | TOML/YAML format |
|
| [File](./file.md) | Manual | YAML/TOML format |
|
||||||
| [Consul](./consul.md) | KV | KV |
|
| [Consul](./consul.md) | KV | KV |
|
||||||
| [Etcd](./etcd.md) | KV | KV |
|
| [Etcd](./etcd.md) | KV | KV |
|
||||||
| [ZooKeeper](./zookeeper.md) | KV | KV |
|
| [ZooKeeper](./zookeeper.md) | KV | KV |
|
||||||
|
@ -169,16 +169,16 @@ but the throttling algorithm applies to each of them independently.
|
||||||
The value of `providers.providersThrottleDuration` should be provided in seconds or as a valid duration format,
|
The value of `providers.providersThrottleDuration` should be provided in seconds or as a valid duration format,
|
||||||
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
see [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers]
|
|
||||||
providers.providersThrottleDuration = 10s
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
providersThrottleDuration: 10s
|
providersThrottleDuration: 10s
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers]
|
||||||
|
providers.providersThrottleDuration = 10s
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.providersThrottleDuration=10s
|
--providers.providersThrottleDuration=10s
|
||||||
```
|
```
|
||||||
|
|
|
@ -18,15 +18,15 @@ Attach labels to your services and let Traefik do the rest!
|
||||||
|
|
||||||
Enabling the Rancher provider
|
Enabling the Rancher provider
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.rancher]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
rancher: {}
|
rancher: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.rancher]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.rancher=true
|
--providers.rancher=true
|
||||||
```
|
```
|
||||||
|
@ -48,14 +48,14 @@ See the dedicated section in [routing](../routing/providers/rancher.md).
|
||||||
|
|
||||||
For an overview of all the options that can be set with the Rancher provider, see the following snippets:
|
For an overview of all the options that can be set with the Rancher provider, see the following snippets:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
--8<-- "content/providers/rancher.toml"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
--8<-- "content/providers/rancher.yml"
|
--8<-- "content/providers/rancher.yml"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
--8<-- "content/providers/rancher.toml"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--8<-- "content/providers/rancher.txt"
|
--8<-- "content/providers/rancher.txt"
|
||||||
```
|
```
|
||||||
|
@ -69,12 +69,6 @@ If set to `false`, services that do not have a `traefik.enable=true` label are i
|
||||||
|
|
||||||
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.rancher]
|
|
||||||
exposedByDefault = false
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
rancher:
|
rancher:
|
||||||
|
@ -82,6 +76,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.rancher]
|
||||||
|
exposedByDefault = false
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.rancher.exposedByDefault=false
|
--providers.rancher.exposedByDefault=false
|
||||||
# ...
|
# ...
|
||||||
|
@ -102,12 +102,6 @@ and the template has access to all the labels defined on this container.
|
||||||
|
|
||||||
This option can be overridden on a container basis with the `traefik.http.routers.Router1.rule` label.
|
This option can be overridden on a container basis with the `traefik.http.routers.Router1.rule` label.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.rancher]
|
|
||||||
defaultRule = "Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
rancher:
|
rancher:
|
||||||
|
@ -115,6 +109,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.rancher]
|
||||||
|
defaultRule = "Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.rancher.defaultRule=Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)
|
--providers.rancher.defaultRule=Host(`{{ .Name }}.{{ index .Labels \"customLabel\"}}`)
|
||||||
# ...
|
# ...
|
||||||
|
@ -126,12 +126,6 @@ _Optional, Default=true_
|
||||||
|
|
||||||
Filter out services with unhealthy states and inactive states.
|
Filter out services with unhealthy states and inactive states.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.rancher]
|
|
||||||
enableServiceHealthFilter = false
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
rancher:
|
rancher:
|
||||||
|
@ -139,6 +133,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.rancher]
|
||||||
|
enableServiceHealthFilter = false
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.rancher.enableServiceHealthFilter=false
|
--providers.rancher.enableServiceHealthFilter=false
|
||||||
# ...
|
# ...
|
||||||
|
@ -150,12 +150,6 @@ _Optional, Default=15_
|
||||||
|
|
||||||
Defines the polling interval (in seconds).
|
Defines the polling interval (in seconds).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.rancher]
|
|
||||||
refreshSeconds = 30
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
rancher:
|
rancher:
|
||||||
|
@ -163,6 +157,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.rancher]
|
||||||
|
refreshSeconds = 30
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.rancher.refreshSeconds=30
|
--providers.rancher.refreshSeconds=30
|
||||||
# ...
|
# ...
|
||||||
|
@ -175,12 +175,6 @@ _Optional, Default=false_
|
||||||
Poll the Rancher metadata service for changes every `rancher.refreshSeconds`,
|
Poll the Rancher metadata service for changes every `rancher.refreshSeconds`,
|
||||||
which is less accurate than the default long polling technique which provides near instantaneous updates to Traefik.
|
which is less accurate than the default long polling technique which provides near instantaneous updates to Traefik.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.rancher]
|
|
||||||
intervalPoll = true
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
rancher:
|
rancher:
|
||||||
|
@ -188,6 +182,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.rancher]
|
||||||
|
intervalPoll = true
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.rancher.intervalPoll=true
|
--providers.rancher.intervalPoll=true
|
||||||
# ...
|
# ...
|
||||||
|
@ -199,12 +199,6 @@ _Optional, Default="/latest"_
|
||||||
|
|
||||||
Prefix used for accessing the Rancher metadata service.
|
Prefix used for accessing the Rancher metadata service.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.rancher]
|
|
||||||
prefix = "/test"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
rancher:
|
rancher:
|
||||||
|
@ -212,6 +206,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.rancher]
|
||||||
|
prefix = "/test"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.rancher.prefix=/test
|
--providers.rancher.prefix=/test
|
||||||
# ...
|
# ...
|
||||||
|
@ -262,12 +262,6 @@ the usual boolean logic, as shown in examples below.
|
||||||
|
|
||||||
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
For additional information, refer to [Restrict the Scope of Service Discovery](./overview.md#restrict-the-scope-of-service-discovery).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.rancher]
|
|
||||||
constraints = "Label(`a.label.name`,`foo`)"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
rancher:
|
rancher:
|
||||||
|
@ -275,6 +269,12 @@ providers:
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.rancher]
|
||||||
|
constraints = "Label(`a.label.name`,`foo`)"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.rancher.constraints=Label(`a.label.name`,`foo`)
|
--providers.rancher.constraints=Label(`a.label.name`,`foo`)
|
||||||
# ...
|
# ...
|
||||||
|
|
|
@ -17,11 +17,6 @@ _Required, Default="127.0.0.1:6379"_
|
||||||
|
|
||||||
Defines how to access to Redis.
|
Defines how to access to Redis.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.redis]
|
|
||||||
endpoints = ["127.0.0.1:6379"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
redis:
|
redis:
|
||||||
|
@ -29,6 +24,11 @@ providers:
|
||||||
- "127.0.0.1:6379"
|
- "127.0.0.1:6379"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.redis]
|
||||||
|
endpoints = ["127.0.0.1:6379"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.redis.endpoints=127.0.0.1:6379
|
--providers.redis.endpoints=127.0.0.1:6379
|
||||||
```
|
```
|
||||||
|
@ -39,17 +39,17 @@ _Required, Default="traefik"_
|
||||||
|
|
||||||
Defines the root key of the configuration.
|
Defines the root key of the configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.redis]
|
|
||||||
rootKey = "traefik"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
redis:
|
redis:
|
||||||
rootKey: "traefik"
|
rootKey: "traefik"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.redis]
|
||||||
|
rootKey = "traefik"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.redis.rootkey=traefik
|
--providers.redis.rootkey=traefik
|
||||||
```
|
```
|
||||||
|
@ -60,12 +60,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Defines a username to connect with Redis.
|
Defines a username to connect with Redis.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.redis]
|
|
||||||
# ...
|
|
||||||
username = "foo"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
redis:
|
redis:
|
||||||
|
@ -73,6 +67,12 @@ providers:
|
||||||
usename: "foo"
|
usename: "foo"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.redis]
|
||||||
|
# ...
|
||||||
|
username = "foo"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.redis.username=foo
|
--providers.redis.username=foo
|
||||||
```
|
```
|
||||||
|
@ -83,12 +83,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Defines a password to connect with Redis.
|
Defines a password to connect with Redis.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.redis]
|
|
||||||
# ...
|
|
||||||
password = "bar"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
redis:
|
redis:
|
||||||
|
@ -96,6 +90,12 @@ providers:
|
||||||
password: "bar"
|
password: "bar"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.redis]
|
||||||
|
# ...
|
||||||
|
password = "bar"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.redis.password=foo
|
--providers.redis.password=foo
|
||||||
```
|
```
|
||||||
|
@ -108,11 +108,6 @@ _Optional_
|
||||||
|
|
||||||
Certificate Authority used for the secure connection to Redis.
|
Certificate Authority used for the secure connection to Redis.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.redis.tls]
|
|
||||||
ca = "path/to/ca.crt"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
redis:
|
redis:
|
||||||
|
@ -120,6 +115,11 @@ providers:
|
||||||
ca: path/to/ca.crt
|
ca: path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.redis.tls]
|
||||||
|
ca = "path/to/ca.crt"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.redis.tls.ca=path/to/ca.crt
|
--providers.redis.tls.ca=path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -136,11 +136,6 @@ When this option is set to `true`, a client certificate is requested during the
|
||||||
|
|
||||||
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.redis.tls]
|
|
||||||
caOptional = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
redis:
|
redis:
|
||||||
|
@ -148,6 +143,11 @@ providers:
|
||||||
caOptional: true
|
caOptional: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.redis.tls]
|
||||||
|
caOptional = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.redis.tls.caOptional=true
|
--providers.redis.tls.caOptional=true
|
||||||
```
|
```
|
||||||
|
@ -156,12 +156,6 @@ providers:
|
||||||
|
|
||||||
Public certificate used for the secure connection to Redis.
|
Public certificate used for the secure connection to Redis.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.redis.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
redis:
|
redis:
|
||||||
|
@ -170,6 +164,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.redis.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.redis.tls.cert=path/to/foo.cert
|
--providers.redis.tls.cert=path/to/foo.cert
|
||||||
--providers.redis.tls.key=path/to/foo.key
|
--providers.redis.tls.key=path/to/foo.key
|
||||||
|
@ -179,12 +179,6 @@ providers:
|
||||||
|
|
||||||
Private certificate used for the secure connection to Redis.
|
Private certificate used for the secure connection to Redis.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.redis.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
redis:
|
redis:
|
||||||
|
@ -193,6 +187,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.redis.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.redis.tls.cert=path/to/foo.cert
|
--providers.redis.tls.cert=path/to/foo.cert
|
||||||
--providers.redis.tls.key=path/to/foo.key
|
--providers.redis.tls.key=path/to/foo.key
|
||||||
|
@ -202,11 +202,6 @@ providers:
|
||||||
|
|
||||||
If `insecureSkipVerify` is `true`, the TLS connection to Redis accepts any certificate presented by the server regardless of the hostnames it covers.
|
If `insecureSkipVerify` is `true`, the TLS connection to Redis accepts any certificate presented by the server regardless of the hostnames it covers.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.redis.tls]
|
|
||||||
insecureSkipVerify = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
redis:
|
redis:
|
||||||
|
@ -214,6 +209,11 @@ providers:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.redis.tls]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.redis.tls.insecureSkipVerify=true
|
--providers.redis.tls.insecureSkipVerify=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -17,11 +17,6 @@ _Required, Default="127.0.0.1:2181"_
|
||||||
|
|
||||||
Defines how to access to ZooKeeper.
|
Defines how to access to ZooKeeper.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.zooKeeper]
|
|
||||||
endpoints = ["127.0.0.1:2181"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
zooKeeper:
|
zooKeeper:
|
||||||
|
@ -29,6 +24,11 @@ providers:
|
||||||
- "127.0.0.1:2181"
|
- "127.0.0.1:2181"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.zooKeeper]
|
||||||
|
endpoints = ["127.0.0.1:2181"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.zookeeper.endpoints=127.0.0.1:2181
|
--providers.zookeeper.endpoints=127.0.0.1:2181
|
||||||
```
|
```
|
||||||
|
@ -39,17 +39,17 @@ _Required, Default="traefik"_
|
||||||
|
|
||||||
Defines the root key of the configuration.
|
Defines the root key of the configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.zooKeeper]
|
|
||||||
rootKey = "traefik"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
zooKeeper:
|
zooKeeper:
|
||||||
rootKey: "traefik"
|
rootKey: "traefik"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.zooKeeper]
|
||||||
|
rootKey = "traefik"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.zookeeper.rootkey=traefik
|
--providers.zookeeper.rootkey=traefik
|
||||||
```
|
```
|
||||||
|
@ -60,12 +60,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Defines a username to connect with ZooKeeper.
|
Defines a username to connect with ZooKeeper.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.zooKeeper]
|
|
||||||
# ...
|
|
||||||
username = "foo"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
zooKeeper:
|
zooKeeper:
|
||||||
|
@ -73,6 +67,12 @@ providers:
|
||||||
usename: "foo"
|
usename: "foo"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.zooKeeper]
|
||||||
|
# ...
|
||||||
|
username = "foo"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.zookeeper.username=foo
|
--providers.zookeeper.username=foo
|
||||||
```
|
```
|
||||||
|
@ -83,12 +83,6 @@ _Optional, Default=""_
|
||||||
|
|
||||||
Defines a password to connect with ZooKeeper.
|
Defines a password to connect with ZooKeeper.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.zooKeeper]
|
|
||||||
# ...
|
|
||||||
password = "bar"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
zooKeeper:
|
zooKeeper:
|
||||||
|
@ -96,6 +90,12 @@ providers:
|
||||||
password: "bar"
|
password: "bar"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.zooKeeper]
|
||||||
|
# ...
|
||||||
|
password = "bar"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.zookeeper.password=foo
|
--providers.zookeeper.password=foo
|
||||||
```
|
```
|
||||||
|
@ -108,11 +108,6 @@ _Optional_
|
||||||
|
|
||||||
Certificate Authority used for the secure connection to ZooKeeper.
|
Certificate Authority used for the secure connection to ZooKeeper.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.zooKeeper.tls]
|
|
||||||
ca = "path/to/ca.crt"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
zooKeeper:
|
zooKeeper:
|
||||||
|
@ -120,6 +115,11 @@ providers:
|
||||||
ca: path/to/ca.crt
|
ca: path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.zooKeeper.tls]
|
||||||
|
ca = "path/to/ca.crt"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.zookeeper.tls.ca=path/to/ca.crt
|
--providers.zookeeper.tls.ca=path/to/ca.crt
|
||||||
```
|
```
|
||||||
|
@ -136,11 +136,6 @@ When this option is set to `true`, a client certificate is requested during the
|
||||||
|
|
||||||
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
When this option is set to `false`, a client certificate is requested during the handshake, and at least one valid certificate should be sent by the client.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.zooKeeper.tls]
|
|
||||||
caOptional = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
zooKeeper:
|
zooKeeper:
|
||||||
|
@ -148,6 +143,11 @@ providers:
|
||||||
caOptional: true
|
caOptional: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.zooKeeper.tls]
|
||||||
|
caOptional = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.zookeeper.tls.caOptional=true
|
--providers.zookeeper.tls.caOptional=true
|
||||||
```
|
```
|
||||||
|
@ -156,12 +156,6 @@ providers:
|
||||||
|
|
||||||
Public certificate used for the secure connection to ZooKeeper.
|
Public certificate used for the secure connection to ZooKeeper.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.zooKeeper.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
zooKeeper:
|
zooKeeper:
|
||||||
|
@ -170,6 +164,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.zooKeeper.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.zookeeper.tls.cert=path/to/foo.cert
|
--providers.zookeeper.tls.cert=path/to/foo.cert
|
||||||
--providers.zookeeper.tls.key=path/to/foo.key
|
--providers.zookeeper.tls.key=path/to/foo.key
|
||||||
|
@ -179,12 +179,6 @@ providers:
|
||||||
|
|
||||||
Private certificate used for the secure connection to ZooKeeper.
|
Private certificate used for the secure connection to ZooKeeper.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.zooKeeper.tls]
|
|
||||||
cert = "path/to/foo.cert"
|
|
||||||
key = "path/to/foo.key"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
zooKeeper:
|
zooKeeper:
|
||||||
|
@ -193,6 +187,12 @@ providers:
|
||||||
key: path/to/foo.key
|
key: path/to/foo.key
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.zooKeeper.tls]
|
||||||
|
cert = "path/to/foo.cert"
|
||||||
|
key = "path/to/foo.key"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.zookeeper.tls.cert=path/to/foo.cert
|
--providers.zookeeper.tls.cert=path/to/foo.cert
|
||||||
--providers.zookeeper.tls.key=path/to/foo.key
|
--providers.zookeeper.tls.key=path/to/foo.key
|
||||||
|
@ -202,11 +202,6 @@ providers:
|
||||||
|
|
||||||
If `insecureSkipVerify` is `true`, the TLS connection to Zookeeper accepts any certificate presented by the server regardless of the hostnames it covers.
|
If `insecureSkipVerify` is `true`, the TLS connection to Zookeeper accepts any certificate presented by the server regardless of the hostnames it covers.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.zooKeeper.tls]
|
|
||||||
insecureSkipVerify = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
zooKeeper:
|
zooKeeper:
|
||||||
|
@ -214,6 +209,11 @@ providers:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.zooKeeper.tls]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.zookeeper.tls.insecureSkipVerify=true
|
--providers.zookeeper.tls.insecureSkipVerify=true
|
||||||
```
|
```
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
Dynamic configuration with files
|
Dynamic configuration with files
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||
```toml tab="TOML"
|
|
||||||
--8<-- "content/reference/dynamic-configuration/file.toml"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yml tab="YAML"
|
```yml tab="YAML"
|
||||||
--8<-- "content/reference/dynamic-configuration/file.yaml"
|
--8<-- "content/reference/dynamic-configuration/file.yaml"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="TOML"
|
||||||
|
--8<-- "content/reference/dynamic-configuration/file.toml"
|
||||||
|
```
|
||||||
|
|
|
@ -538,7 +538,7 @@ KV Username
|
||||||
Enable debug logging of generated configuration template. (Default: ```false```)
|
Enable debug logging of generated configuration template. (Default: ```false```)
|
||||||
|
|
||||||
`--providers.file.directory`:
|
`--providers.file.directory`:
|
||||||
Load dynamic configuration from one or more .toml or .yml files in a directory.
|
Load dynamic configuration from one or more .yml or .toml files in a directory.
|
||||||
|
|
||||||
`--providers.file.filename`:
|
`--providers.file.filename`:
|
||||||
Load dynamic configuration from a file.
|
Load dynamic configuration from a file.
|
||||||
|
|
|
@ -538,7 +538,7 @@ KV Username
|
||||||
Enable debug logging of generated configuration template. (Default: ```false```)
|
Enable debug logging of generated configuration template. (Default: ```false```)
|
||||||
|
|
||||||
`TRAEFIK_PROVIDERS_FILE_DIRECTORY`:
|
`TRAEFIK_PROVIDERS_FILE_DIRECTORY`:
|
||||||
Load dynamic configuration from one or more .toml or .yml files in a directory.
|
Load dynamic configuration from one or more .yml or .toml files in a directory.
|
||||||
|
|
||||||
`TRAEFIK_PROVIDERS_FILE_FILENAME`:
|
`TRAEFIK_PROVIDERS_FILE_FILENAME`:
|
||||||
Load dynamic configuration from a file.
|
Load dynamic configuration from a file.
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
# Static Configuration: File
|
# Static Configuration: File
|
||||||
|
|
||||||
```toml tab="TOML"
|
|
||||||
--8<-- "content/reference/static-configuration/file.toml"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yml tab="YAML"
|
```yml tab="YAML"
|
||||||
--8<-- "content/reference/static-configuration/file.yaml"
|
--8<-- "content/reference/static-configuration/file.yaml"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="TOML"
|
||||||
|
--8<-- "content/reference/static-configuration/file.toml"
|
||||||
|
```
|
||||||
|
|
|
@ -386,6 +386,7 @@
|
||||||
|
|
||||||
[pilot]
|
[pilot]
|
||||||
token = "foobar"
|
token = "foobar"
|
||||||
|
dashboard = true
|
||||||
|
|
||||||
[experimental]
|
[experimental]
|
||||||
kubernetesGateway = true
|
kubernetesGateway = true
|
||||||
|
|
|
@ -407,6 +407,7 @@ certificatesResolvers:
|
||||||
tlsChallenge: {}
|
tlsChallenge: {}
|
||||||
pilot:
|
pilot:
|
||||||
token: foobar
|
token: foobar
|
||||||
|
dashboard: true
|
||||||
experimental:
|
experimental:
|
||||||
kubernetesGateway: true
|
kubernetesGateway: true
|
||||||
http3: true
|
http3: true
|
||||||
|
|
|
@ -13,13 +13,6 @@ and whether to listen for TCP or UDP.
|
||||||
|
|
||||||
??? example "Port 80 only"
|
??? example "Port 80 only"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -27,6 +20,13 @@ and whether to listen for TCP or UDP.
|
||||||
address: ":80"
|
address: ":80"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.web.address=:80
|
--entryPoints.web.address=:80
|
||||||
|
@ -36,16 +36,6 @@ and whether to listen for TCP or UDP.
|
||||||
|
|
||||||
??? example "Port 80 & 443"
|
??? example "Port 80 & 443"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -56,6 +46,16 @@ and whether to listen for TCP or UDP.
|
||||||
address: ":443"
|
address: ":443"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.web.address=:80
|
--entryPoints.web.address=:80
|
||||||
|
@ -67,13 +67,6 @@ and whether to listen for TCP or UDP.
|
||||||
|
|
||||||
??? example "UDP on port 1704"
|
??? example "UDP on port 1704"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.streaming]
|
|
||||||
address = ":1704/udp"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -81,6 +74,13 @@ and whether to listen for TCP or UDP.
|
||||||
address: ":1704/udp"
|
address: ":1704/udp"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.streaming]
|
||||||
|
address = ":1704/udp"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.streaming.address=:1704/udp
|
--entryPoints.streaming.address=:1704/udp
|
||||||
|
@ -91,32 +91,10 @@ and whether to listen for TCP or UDP.
|
||||||
### General
|
### General
|
||||||
|
|
||||||
EntryPoints are part of the [static configuration](../getting-started/configuration-overview.md#the-static-configuration).
|
EntryPoints are part of the [static configuration](../getting-started/configuration-overview.md#the-static-configuration).
|
||||||
They can be defined by using a file (TOML or YAML) or CLI arguments.
|
They can be defined by using a file (YAML or TOML) or CLI arguments.
|
||||||
|
|
||||||
??? info "See the complete reference for the list of available options"
|
??? info "See the complete reference for the list of available options"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.name]
|
|
||||||
address = ":8888" # same as ":8888/tcp"
|
|
||||||
enableHTTP3 = true
|
|
||||||
[entryPoints.name.transport]
|
|
||||||
[entryPoints.name.transport.lifeCycle]
|
|
||||||
requestAcceptGraceTimeout = 42
|
|
||||||
graceTimeOut = 42
|
|
||||||
[entryPoints.name.transport.respondingTimeouts]
|
|
||||||
readTimeout = 42
|
|
||||||
writeTimeout = 42
|
|
||||||
idleTimeout = 42
|
|
||||||
[entryPoints.name.proxyProtocol]
|
|
||||||
insecure = true
|
|
||||||
trustedIPs = ["127.0.0.1", "192.168.0.1"]
|
|
||||||
[entryPoints.name.forwardedHeaders]
|
|
||||||
insecure = true
|
|
||||||
trustedIPs = ["127.0.0.1", "192.168.0.1"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -143,6 +121,28 @@ They can be defined by using a file (TOML or YAML) or CLI arguments.
|
||||||
- "192.168.0.1"
|
- "192.168.0.1"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.name]
|
||||||
|
address = ":8888" # same as ":8888/tcp"
|
||||||
|
enableHTTP3 = true
|
||||||
|
[entryPoints.name.transport]
|
||||||
|
[entryPoints.name.transport.lifeCycle]
|
||||||
|
requestAcceptGraceTimeout = 42
|
||||||
|
graceTimeOut = 42
|
||||||
|
[entryPoints.name.transport.respondingTimeouts]
|
||||||
|
readTimeout = 42
|
||||||
|
writeTimeout = 42
|
||||||
|
idleTimeout = 42
|
||||||
|
[entryPoints.name.proxyProtocol]
|
||||||
|
insecure = true
|
||||||
|
trustedIPs = ["127.0.0.1", "192.168.0.1"]
|
||||||
|
[entryPoints.name.forwardedHeaders]
|
||||||
|
insecure = true
|
||||||
|
trustedIPs = ["127.0.0.1", "192.168.0.1"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.name.address=:8888 # same as :8888/tcp
|
--entryPoints.name.address=:8888 # same as :8888/tcp
|
||||||
|
@ -173,15 +173,6 @@ If both TCP and UDP are wanted for the same port, two entryPoints definitions ar
|
||||||
|
|
||||||
??? example "Both TCP and UDP on Port 3179"
|
??? example "Both TCP and UDP on Port 3179"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.tcpep]
|
|
||||||
address = ":3179"
|
|
||||||
[entryPoints.udpep]
|
|
||||||
address = ":3179/udp"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -191,6 +182,15 @@ If both TCP and UDP are wanted for the same port, two entryPoints definitions ar
|
||||||
address: ":3179/udp"
|
address: ":3179/udp"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.tcpep]
|
||||||
|
address = ":3179"
|
||||||
|
[entryPoints.udpep]
|
||||||
|
address = ":3179/udp"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.tcpep.address=:3179
|
--entryPoints.tcpep.address=:3179
|
||||||
|
@ -199,13 +199,6 @@ If both TCP and UDP are wanted for the same port, two entryPoints definitions ar
|
||||||
|
|
||||||
??? example "Listen on Specific IP Addresses Only"
|
??? example "Listen on Specific IP Addresses Only"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints.specificIPv4]
|
|
||||||
address = "192.168.2.7:8888"
|
|
||||||
[entryPoints.specificIPv6]
|
|
||||||
address = "[2001:db8::1]:8888"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (yaml)"
|
```yaml tab="File (yaml)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
specificIPv4:
|
specificIPv4:
|
||||||
|
@ -214,6 +207,13 @@ If both TCP and UDP are wanted for the same port, two entryPoints definitions ar
|
||||||
address: "[2001:db8::1]:8888"
|
address: "[2001:db8::1]:8888"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.specificIPv4]
|
||||||
|
address = "192.168.2.7:8888"
|
||||||
|
[entryPoints.specificIPv6]
|
||||||
|
address = "[2001:db8::1]:8888"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.specificIPv4.address=192.168.2.7:8888
|
--entrypoints.specificIPv4.address=192.168.2.7:8888
|
||||||
--entrypoints.specificIPv6.address=[2001:db8::1]:8888
|
--entrypoints.specificIPv6.address=[2001:db8::1]:8888
|
||||||
|
@ -237,14 +237,6 @@ Enabling HTTP3 will automatically add the correct headers for the connection upg
|
||||||
As the HTTP3 spec is still in draft, HTTP3 support in Traefik is an experimental feature and needs to be activated
|
As the HTTP3 spec is still in draft, HTTP3 support in Traefik is an experimental feature and needs to be activated
|
||||||
in the experimental section of the static configuration.
|
in the experimental section of the static configuration.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[experimental]
|
|
||||||
http3 = true
|
|
||||||
|
|
||||||
[entryPoints.name]
|
|
||||||
enableHTTP3 = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
experimental:
|
experimental:
|
||||||
http3: true
|
http3: true
|
||||||
|
@ -254,6 +246,14 @@ Enabling HTTP3 will automatically add the correct headers for the connection upg
|
||||||
enableHTTP3: true
|
enableHTTP3: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[experimental]
|
||||||
|
http3 = true
|
||||||
|
|
||||||
|
[entryPoints.name]
|
||||||
|
enableHTTP3 = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--experimental.http3=true --entrypoints.name.enablehttp3=true
|
--experimental.http3=true --entrypoints.name.enablehttp3=true
|
||||||
```
|
```
|
||||||
|
@ -266,16 +266,6 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
||||||
|
|
||||||
Trusting Forwarded Headers from specific IPs.
|
Trusting Forwarded Headers from specific IPs.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
[entryPoints.web.forwardedHeaders]
|
|
||||||
trustedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -287,6 +277,16 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
||||||
- "192.168.1.7"
|
- "192.168.1.7"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
|
||||||
|
[entryPoints.web.forwardedHeaders]
|
||||||
|
trustedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.web.address=:80
|
--entryPoints.web.address=:80
|
||||||
|
@ -297,6 +297,15 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
||||||
|
|
||||||
Insecure Mode (Always Trusting Forwarded Headers).
|
Insecure Mode (Always Trusting Forwarded Headers).
|
||||||
|
|
||||||
|
```yaml tab="File (YAML)"
|
||||||
|
## Static configuration
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: ":80"
|
||||||
|
forwardedHeaders:
|
||||||
|
insecure: true
|
||||||
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
[entryPoints]
|
[entryPoints]
|
||||||
|
@ -307,15 +316,6 @@ You can configure Traefik to trust the forwarded headers information (`X-Forward
|
||||||
insecure = true
|
insecure = true
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
|
||||||
## Static configuration
|
|
||||||
entryPoints:
|
|
||||||
web:
|
|
||||||
address: ":80"
|
|
||||||
forwardedHeaders:
|
|
||||||
insecure: true
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.web.address=:80
|
--entryPoints.web.address=:80
|
||||||
|
@ -339,16 +339,6 @@ Setting them has no effect for UDP entryPoints.
|
||||||
Can be provided in a format supported by [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration) or as raw values (digits).
|
Can be provided in a format supported by [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration) or as raw values (digits).
|
||||||
If no units are provided, the value is parsed assuming seconds.
|
If no units are provided, the value is parsed assuming seconds.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.name]
|
|
||||||
address = ":8888"
|
|
||||||
[entryPoints.name.transport]
|
|
||||||
[entryPoints.name.transport.respondingTimeouts]
|
|
||||||
readTimeout = 42
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -359,6 +349,16 @@ Setting them has no effect for UDP entryPoints.
|
||||||
readTimeout: 42
|
readTimeout: 42
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.name]
|
||||||
|
address = ":8888"
|
||||||
|
[entryPoints.name.transport]
|
||||||
|
[entryPoints.name.transport.respondingTimeouts]
|
||||||
|
readTimeout = 42
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.name.address=:8888
|
--entryPoints.name.address=:8888
|
||||||
|
@ -376,16 +376,6 @@ Setting them has no effect for UDP entryPoints.
|
||||||
Can be provided in a format supported by [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration) or as raw values (digits).
|
Can be provided in a format supported by [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration) or as raw values (digits).
|
||||||
If no units are provided, the value is parsed assuming seconds.
|
If no units are provided, the value is parsed assuming seconds.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.name]
|
|
||||||
address = ":8888"
|
|
||||||
[entryPoints.name.transport]
|
|
||||||
[entryPoints.name.transport.respondingTimeouts]
|
|
||||||
writeTimeout = 42
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -396,6 +386,16 @@ Setting them has no effect for UDP entryPoints.
|
||||||
writeTimeout: 42
|
writeTimeout: 42
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.name]
|
||||||
|
address = ":8888"
|
||||||
|
[entryPoints.name.transport]
|
||||||
|
[entryPoints.name.transport.respondingTimeouts]
|
||||||
|
writeTimeout = 42
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.name.address=:8888
|
--entryPoints.name.address=:8888
|
||||||
|
@ -412,16 +412,6 @@ Setting them has no effect for UDP entryPoints.
|
||||||
Can be provided in a format supported by [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration) or as raw values (digits).
|
Can be provided in a format supported by [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration) or as raw values (digits).
|
||||||
If no units are provided, the value is parsed assuming seconds.
|
If no units are provided, the value is parsed assuming seconds.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.name]
|
|
||||||
address = ":8888"
|
|
||||||
[entryPoints.name.transport]
|
|
||||||
[entryPoints.name.transport.respondingTimeouts]
|
|
||||||
idleTimeout = 42
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -432,6 +422,16 @@ Setting them has no effect for UDP entryPoints.
|
||||||
idleTimeout: 42
|
idleTimeout: 42
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.name]
|
||||||
|
address = ":8888"
|
||||||
|
[entryPoints.name.transport]
|
||||||
|
[entryPoints.name.transport.respondingTimeouts]
|
||||||
|
idleTimeout = 42
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.name.address=:8888
|
--entryPoints.name.address=:8888
|
||||||
|
@ -454,16 +454,6 @@ Controls the behavior of Traefik during the shutdown phase.
|
||||||
If no units are provided, the value is parsed assuming seconds.
|
If no units are provided, the value is parsed assuming seconds.
|
||||||
The zero duration disables the request accepting grace period, i.e., Traefik will immediately proceed to the grace period.
|
The zero duration disables the request accepting grace period, i.e., Traefik will immediately proceed to the grace period.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.name]
|
|
||||||
address = ":8888"
|
|
||||||
[entryPoints.name.transport]
|
|
||||||
[entryPoints.name.transport.lifeCycle]
|
|
||||||
requestAcceptGraceTimeout = 42
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -474,6 +464,16 @@ Controls the behavior of Traefik during the shutdown phase.
|
||||||
requestAcceptGraceTimeout: 42
|
requestAcceptGraceTimeout: 42
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.name]
|
||||||
|
address = ":8888"
|
||||||
|
[entryPoints.name.transport]
|
||||||
|
[entryPoints.name.transport.lifeCycle]
|
||||||
|
requestAcceptGraceTimeout = 42
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.name.address=:8888
|
--entryPoints.name.address=:8888
|
||||||
|
@ -492,16 +492,6 @@ Controls the behavior of Traefik during the shutdown phase.
|
||||||
|
|
||||||
!!! warning "In this time frame no new requests are accepted."
|
!!! warning "In this time frame no new requests are accepted."
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.name]
|
|
||||||
address = ":8888"
|
|
||||||
[entryPoints.name.transport]
|
|
||||||
[entryPoints.name.transport.lifeCycle]
|
|
||||||
graceTimeOut = 42
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -512,6 +502,16 @@ Controls the behavior of Traefik during the shutdown phase.
|
||||||
graceTimeOut: 42
|
graceTimeOut: 42
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.name]
|
||||||
|
address = ":8888"
|
||||||
|
[entryPoints.name.transport]
|
||||||
|
[entryPoints.name.transport.lifeCycle]
|
||||||
|
graceTimeOut = 42
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.name.address=:8888
|
--entryPoints.name.address=:8888
|
||||||
|
@ -530,16 +530,6 @@ If the Proxy Protocol header is passed, then the version is determined automatic
|
||||||
|
|
||||||
Enabling Proxy Protocol with Trusted IPs.
|
Enabling Proxy Protocol with Trusted IPs.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
[entryPoints.web.proxyProtocol]
|
|
||||||
trustedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -551,6 +541,16 @@ If the Proxy Protocol header is passed, then the version is determined automatic
|
||||||
- "192.168.1.7"
|
- "192.168.1.7"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
|
||||||
|
[entryPoints.web.proxyProtocol]
|
||||||
|
trustedIPs = ["127.0.0.1/32", "192.168.1.7"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entryPoints.web.address=:80
|
--entryPoints.web.address=:80
|
||||||
--entryPoints.web.proxyProtocol.trustedIPs=127.0.0.1/32,192.168.1.7
|
--entryPoints.web.proxyProtocol.trustedIPs=127.0.0.1/32,192.168.1.7
|
||||||
|
@ -565,6 +565,15 @@ If the Proxy Protocol header is passed, then the version is determined automatic
|
||||||
In a test environments, you can configure Traefik to trust every incoming connection.
|
In a test environments, you can configure Traefik to trust every incoming connection.
|
||||||
Doing so, every remote client address will be replaced (`trustedIPs` won't have any effect)
|
Doing so, every remote client address will be replaced (`trustedIPs` won't have any effect)
|
||||||
|
|
||||||
|
```yaml tab="File (YAML)"
|
||||||
|
## Static configuration
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: ":80"
|
||||||
|
proxyProtocol:
|
||||||
|
insecure: true
|
||||||
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
[entryPoints]
|
[entryPoints]
|
||||||
|
@ -575,15 +584,6 @@ If the Proxy Protocol header is passed, then the version is determined automatic
|
||||||
insecure = true
|
insecure = true
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
|
||||||
## Static configuration
|
|
||||||
entryPoints:
|
|
||||||
web:
|
|
||||||
address: ":80"
|
|
||||||
proxyProtocol:
|
|
||||||
insecure: true
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entryPoints.web.address=:80
|
--entryPoints.web.address=:80
|
||||||
--entryPoints.web.proxyProtocol.insecure
|
--entryPoints.web.proxyProtocol.insecure
|
||||||
|
@ -602,20 +602,6 @@ This whole section is dedicated to options, keyed by entry point, that will appl
|
||||||
|
|
||||||
??? example "HTTPS redirection (80 to 443)"
|
??? example "HTTPS redirection (80 to 443)"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
[entryPoints.web.http]
|
|
||||||
[entryPoints.web.http.redirections]
|
|
||||||
[entryPoints.web.http.redirections.entryPoint]
|
|
||||||
to = "websecure"
|
|
||||||
scheme = "https"
|
|
||||||
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
web:
|
web:
|
||||||
|
@ -630,6 +616,20 @@ This whole section is dedicated to options, keyed by entry point, that will appl
|
||||||
address: :443
|
address: :443
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
|
||||||
|
[entryPoints.web.http]
|
||||||
|
[entryPoints.web.http.redirections]
|
||||||
|
[entryPoints.web.http.redirections.entryPoint]
|
||||||
|
to = "websecure"
|
||||||
|
scheme = "https"
|
||||||
|
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.web.address=:80
|
--entrypoints.web.address=:80
|
||||||
--entrypoints.web.http.redirections.entryPoint.to=websecure
|
--entrypoints.web.http.redirections.entryPoint.to=websecure
|
||||||
|
@ -650,14 +650,6 @@ This section is a convenience to enable (permanent) redirecting of all incoming
|
||||||
- an entry point name (ex: `websecure`)
|
- an entry point name (ex: `websecure`)
|
||||||
- a port (`:443`)
|
- a port (`:443`)
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints.foo]
|
|
||||||
# ...
|
|
||||||
[entryPoints.foo.http.redirections]
|
|
||||||
[entryPoints.foo.http.redirections.entryPoint]
|
|
||||||
to = "websecure"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
foo:
|
foo:
|
||||||
|
@ -668,6 +660,14 @@ This section is a convenience to enable (permanent) redirecting of all incoming
|
||||||
to: websecure
|
to: websecure
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.foo]
|
||||||
|
# ...
|
||||||
|
[entryPoints.foo.http.redirections]
|
||||||
|
[entryPoints.foo.http.redirections.entryPoint]
|
||||||
|
to = "websecure"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.foo.http.redirections.entryPoint.to=websecure
|
--entrypoints.foo.http.redirections.entryPoint.to=websecure
|
||||||
```
|
```
|
||||||
|
@ -678,15 +678,6 @@ This section is a convenience to enable (permanent) redirecting of all incoming
|
||||||
|
|
||||||
The redirection target scheme.
|
The redirection target scheme.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints.foo]
|
|
||||||
# ...
|
|
||||||
[entryPoints.foo.http.redirections]
|
|
||||||
[entryPoints.foo.http.redirections.entryPoint]
|
|
||||||
# ...
|
|
||||||
scheme = "https"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
foo:
|
foo:
|
||||||
|
@ -698,6 +689,15 @@ This section is a convenience to enable (permanent) redirecting of all incoming
|
||||||
scheme: https
|
scheme: https
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.foo]
|
||||||
|
# ...
|
||||||
|
[entryPoints.foo.http.redirections]
|
||||||
|
[entryPoints.foo.http.redirections.entryPoint]
|
||||||
|
# ...
|
||||||
|
scheme = "https"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.foo.http.redirections.entryPoint.scheme=https
|
--entrypoints.foo.http.redirections.entryPoint.scheme=https
|
||||||
```
|
```
|
||||||
|
@ -708,15 +708,6 @@ This section is a convenience to enable (permanent) redirecting of all incoming
|
||||||
|
|
||||||
To apply a permanent redirection.
|
To apply a permanent redirection.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints.foo]
|
|
||||||
# ...
|
|
||||||
[entryPoints.foo.http.redirections]
|
|
||||||
[entryPoints.foo.http.redirections.entryPoint]
|
|
||||||
# ...
|
|
||||||
permanent = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
foo:
|
foo:
|
||||||
|
@ -728,6 +719,15 @@ This section is a convenience to enable (permanent) redirecting of all incoming
|
||||||
permanent: true
|
permanent: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.foo]
|
||||||
|
# ...
|
||||||
|
[entryPoints.foo.http.redirections]
|
||||||
|
[entryPoints.foo.http.redirections.entryPoint]
|
||||||
|
# ...
|
||||||
|
permanent = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.foo.http.redirections.entrypoint.permanent=true
|
--entrypoints.foo.http.redirections.entrypoint.permanent=true
|
||||||
```
|
```
|
||||||
|
@ -738,15 +738,6 @@ This section is a convenience to enable (permanent) redirecting of all incoming
|
||||||
|
|
||||||
Priority of the generated router.
|
Priority of the generated router.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints.foo]
|
|
||||||
# ...
|
|
||||||
[entryPoints.foo.http.redirections]
|
|
||||||
[entryPoints.foo.http.redirections.entryPoint]
|
|
||||||
# ...
|
|
||||||
priority = 10
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
foo:
|
foo:
|
||||||
|
@ -758,6 +749,15 @@ This section is a convenience to enable (permanent) redirecting of all incoming
|
||||||
priority: 10
|
priority: 10
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.foo]
|
||||||
|
# ...
|
||||||
|
[entryPoints.foo.http.redirections]
|
||||||
|
[entryPoints.foo.http.redirections.entryPoint]
|
||||||
|
# ...
|
||||||
|
priority = 10
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.foo.http.redirections.entrypoint.priority=10
|
--entrypoints.foo.http.redirections.entrypoint.priority=10
|
||||||
```
|
```
|
||||||
|
@ -766,14 +766,6 @@ This section is a convenience to enable (permanent) redirecting of all incoming
|
||||||
|
|
||||||
The list of middlewares that are prepended by default to the list of middlewares of each router associated to the named entry point.
|
The list of middlewares that are prepended by default to the list of middlewares of each router associated to the named entry point.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
|
|
||||||
[entryPoints.websecure.http]
|
|
||||||
middlewares = ["auth@file", "strip@file"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
websecure:
|
websecure:
|
||||||
|
@ -784,6 +776,14 @@ entryPoints:
|
||||||
- strip@file
|
- strip@file
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
|
||||||
|
[entryPoints.websecure.http]
|
||||||
|
middlewares = ["auth@file", "strip@file"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.websecure.address=:443
|
--entrypoints.websecure.address=:443
|
||||||
--entrypoints.websecure.http.middlewares=auth@file,strip@file
|
--entrypoints.websecure.http.middlewares=auth@file,strip@file
|
||||||
|
@ -797,21 +797,6 @@ If a TLS section (i.e. any of its fields) is user-defined, then the default conf
|
||||||
|
|
||||||
The TLS section is the same as the [TLS section on HTTP routers](./routers/index.md#tls).
|
The TLS section is the same as the [TLS section on HTTP routers](./routers/index.md#tls).
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
|
|
||||||
[entryPoints.websecure.http.tls]
|
|
||||||
options = "foobar"
|
|
||||||
certResolver = "leresolver"
|
|
||||||
[[entryPoints.websecure.http.tls.domains]]
|
|
||||||
main = "example.com"
|
|
||||||
sans = ["foo.example.com", "bar.example.com"]
|
|
||||||
[[entryPoints.websecure.http.tls.domains]]
|
|
||||||
main = "test.com"
|
|
||||||
sans = ["foo.test.com", "bar.test.com"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
websecure:
|
websecure:
|
||||||
|
@ -831,6 +816,21 @@ entryPoints:
|
||||||
- bar.test.com
|
- bar.test.com
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
|
||||||
|
[entryPoints.websecure.http.tls]
|
||||||
|
options = "foobar"
|
||||||
|
certResolver = "leresolver"
|
||||||
|
[[entryPoints.websecure.http.tls.domains]]
|
||||||
|
main = "example.com"
|
||||||
|
sans = ["foo.example.com", "bar.example.com"]
|
||||||
|
[[entryPoints.websecure.http.tls.domains]]
|
||||||
|
main = "test.com"
|
||||||
|
sans = ["foo.test.com", "bar.test.com"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.websecure.address=:443
|
--entrypoints.websecure.address=:443
|
||||||
--entrypoints.websecure.http.tls.options=foobar
|
--entrypoints.websecure.http.tls.options=foobar
|
||||||
|
@ -843,14 +843,6 @@ entryPoints:
|
||||||
|
|
||||||
??? example "Let's Encrypt"
|
??? example "Let's Encrypt"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
|
|
||||||
[entryPoints.websecure.http.tls]
|
|
||||||
certResolver = "leresolver"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
websecure:
|
websecure:
|
||||||
|
@ -860,6 +852,14 @@ entryPoints:
|
||||||
certResolver: leresolver
|
certResolver: leresolver
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
|
||||||
|
[entryPoints.websecure.http.tls]
|
||||||
|
certResolver = "leresolver"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--entrypoints.websecure.address=:443
|
--entrypoints.websecure.address=:443
|
||||||
--entrypoints.websecure.http.tls.certResolver=leresolver
|
--entrypoints.websecure.http.tls.certResolver=leresolver
|
||||||
|
@ -876,14 +876,6 @@ _Optional, Default=3s_
|
||||||
Timeout defines how long to wait on an idle session before releasing the related resources.
|
Timeout defines how long to wait on an idle session before releasing the related resources.
|
||||||
The Timeout value must be greater than zero.
|
The Timeout value must be greater than zero.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints.foo]
|
|
||||||
address = ":8000/udp"
|
|
||||||
|
|
||||||
[entryPoints.foo.udp]
|
|
||||||
timeout = "10s"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
foo:
|
foo:
|
||||||
|
@ -892,6 +884,14 @@ entryPoints:
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints.foo]
|
||||||
|
address = ":8000/udp"
|
||||||
|
|
||||||
|
[entryPoints.foo.udp]
|
||||||
|
timeout = "10s"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
entrypoints.foo.address=:8000/udp
|
entrypoints.foo.address=:8000/udp
|
||||||
entrypoints.foo.udp.timeout=10s
|
entrypoints.foo.udp.timeout=10s
|
||||||
|
|
|
@ -26,18 +26,6 @@ In the process, Traefik will make sure that the user is authenticated (using the
|
||||||
|
|
||||||
Static configuration:
|
Static configuration:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.web]
|
|
||||||
# Listen on port 8081 for incoming requests
|
|
||||||
address = ":8081"
|
|
||||||
|
|
||||||
[providers]
|
|
||||||
# Enable the file provider to define routers / middlewares / services in file
|
|
||||||
[providers.file]
|
|
||||||
directory = "/path/to/dynamic/conf"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
web:
|
web:
|
||||||
|
@ -50,6 +38,18 @@ providers:
|
||||||
directory: /path/to/dynamic/conf
|
directory: /path/to/dynamic/conf
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
# Listen on port 8081 for incoming requests
|
||||||
|
address = ":8081"
|
||||||
|
|
||||||
|
[providers]
|
||||||
|
# Enable the file provider to define routers / middlewares / services in file
|
||||||
|
[providers.file]
|
||||||
|
directory = "/path/to/dynamic/conf"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# Listen on port 8081 for incoming requests
|
# Listen on port 8081 for incoming requests
|
||||||
--entryPoints.web.address=:8081
|
--entryPoints.web.address=:8081
|
||||||
|
@ -60,30 +60,6 @@ providers:
|
||||||
|
|
||||||
Dynamic configuration:
|
Dynamic configuration:
|
||||||
|
|
||||||
```toml tab="TOML"
|
|
||||||
# http routing section
|
|
||||||
[http]
|
|
||||||
[http.routers]
|
|
||||||
# Define a connection between requests and services
|
|
||||||
[http.routers.to-whoami]
|
|
||||||
rule = "Host(`example.com`) && PathPrefix(`/whoami/`)"
|
|
||||||
# If the rule matches, applies the middleware
|
|
||||||
middlewares = ["test-user"]
|
|
||||||
# If the rule matches, forward to the whoami service (declared below)
|
|
||||||
service = "whoami"
|
|
||||||
|
|
||||||
[http.middlewares]
|
|
||||||
# Define an authentication mechanism
|
|
||||||
[http.middlewares.test-user.basicAuth]
|
|
||||||
users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"]
|
|
||||||
|
|
||||||
[http.services]
|
|
||||||
# Define how to reach an existing service on our infrastructure
|
|
||||||
[http.services.whoami.loadBalancer]
|
|
||||||
[[http.services.whoami.loadBalancer.servers]]
|
|
||||||
url = "http://private/whoami-service"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="YAML"
|
```yaml tab="YAML"
|
||||||
# http routing section
|
# http routing section
|
||||||
http:
|
http:
|
||||||
|
@ -112,53 +88,6 @@ http:
|
||||||
- url: http://private/whoami-service
|
- url: http://private/whoami-service
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! info ""
|
|
||||||
|
|
||||||
In this example, we use the [file provider](../providers/file.md).
|
|
||||||
Even if it is one of the least magical way of configuring Traefik, it explicitly describes every available notion.
|
|
||||||
|
|
||||||
!!! info "HTTP / TCP"
|
|
||||||
|
|
||||||
In this example, we've defined routing rules for http requests only.
|
|
||||||
Traefik also supports TCP requests. To add [TCP routers](./routers/index.md) and [TCP services](./services/index.md), declare them in a TCP section like in the following.
|
|
||||||
|
|
||||||
??? example "Adding a TCP route for TLS requests on whoami.example.com"
|
|
||||||
|
|
||||||
**Static Configuration**
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.web]
|
|
||||||
# Listen on port 8081 for incoming requests
|
|
||||||
address = ":8081"
|
|
||||||
|
|
||||||
[providers]
|
|
||||||
# Enable the file provider to define routers / middlewares / services in file
|
|
||||||
[providers.file]
|
|
||||||
directory = "/path/to/dynamic/conf"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
|
||||||
entryPoints:
|
|
||||||
web:
|
|
||||||
# Listen on port 8081 for incoming requests
|
|
||||||
address: :8081
|
|
||||||
providers:
|
|
||||||
# Enable the file provider to define routers / middlewares / services in file
|
|
||||||
file:
|
|
||||||
directory: /path/to/dynamic/conf
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash tab="CLI"
|
|
||||||
# Listen on port 8081 for incoming requests
|
|
||||||
--entryPoints.web.address=:8081
|
|
||||||
|
|
||||||
# Enable the file provider to define routers / middlewares / services in file
|
|
||||||
--providers.file.directory=/path/to/dynamic/conf
|
|
||||||
```
|
|
||||||
|
|
||||||
**Dynamic Configuration**
|
|
||||||
|
|
||||||
```toml tab="TOML"
|
```toml tab="TOML"
|
||||||
# http routing section
|
# http routing section
|
||||||
[http]
|
[http]
|
||||||
|
@ -181,20 +110,55 @@ http:
|
||||||
[http.services.whoami.loadBalancer]
|
[http.services.whoami.loadBalancer]
|
||||||
[[http.services.whoami.loadBalancer.servers]]
|
[[http.services.whoami.loadBalancer.servers]]
|
||||||
url = "http://private/whoami-service"
|
url = "http://private/whoami-service"
|
||||||
|
|
||||||
[tcp]
|
|
||||||
[tcp.routers]
|
|
||||||
[tcp.routers.to-whoami-tcp]
|
|
||||||
rule = "HostSNI(`whoami-tcp.example.com`)"
|
|
||||||
service = "whoami-tcp"
|
|
||||||
[tcp.routers.to-whoami-tcp.tls]
|
|
||||||
|
|
||||||
[tcp.services]
|
|
||||||
[tcp.services.whoami-tcp.loadBalancer]
|
|
||||||
[[tcp.services.whoami-tcp.loadBalancer.servers]]
|
|
||||||
address = "xx.xx.xx.xx:xx"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
!!! info ""
|
||||||
|
|
||||||
|
In this example, we use the [file provider](../providers/file.md).
|
||||||
|
Even if it is one of the least magical way of configuring Traefik, it explicitly describes every available notion.
|
||||||
|
|
||||||
|
!!! info "HTTP / TCP"
|
||||||
|
|
||||||
|
In this example, we've defined routing rules for http requests only.
|
||||||
|
Traefik also supports TCP requests. To add [TCP routers](./routers/index.md) and [TCP services](./services/index.md), declare them in a TCP section like in the following.
|
||||||
|
|
||||||
|
??? example "Adding a TCP route for TLS requests on whoami.example.com"
|
||||||
|
|
||||||
|
**Static Configuration**
|
||||||
|
|
||||||
|
```yaml tab="File (YAML)"
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
# Listen on port 8081 for incoming requests
|
||||||
|
address: :8081
|
||||||
|
providers:
|
||||||
|
# Enable the file provider to define routers / middlewares / services in file
|
||||||
|
file:
|
||||||
|
directory: /path/to/dynamic/conf
|
||||||
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
# Listen on port 8081 for incoming requests
|
||||||
|
address = ":8081"
|
||||||
|
|
||||||
|
[providers]
|
||||||
|
# Enable the file provider to define routers / middlewares / services in file
|
||||||
|
[providers.file]
|
||||||
|
directory = "/path/to/dynamic/conf"
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash tab="CLI"
|
||||||
|
# Listen on port 8081 for incoming requests
|
||||||
|
--entryPoints.web.address=:8081
|
||||||
|
|
||||||
|
# Enable the file provider to define routers / middlewares / services in file
|
||||||
|
--providers.file.directory=/path/to/dynamic/conf
|
||||||
|
```
|
||||||
|
|
||||||
|
**Dynamic Configuration**
|
||||||
|
|
||||||
```yaml tab="YAML"
|
```yaml tab="YAML"
|
||||||
# http routing section
|
# http routing section
|
||||||
http:
|
http:
|
||||||
|
@ -237,6 +201,42 @@ http:
|
||||||
- address: xx.xx.xx.xx:xx
|
- address: xx.xx.xx.xx:xx
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="TOML"
|
||||||
|
# http routing section
|
||||||
|
[http]
|
||||||
|
[http.routers]
|
||||||
|
# Define a connection between requests and services
|
||||||
|
[http.routers.to-whoami]
|
||||||
|
rule = "Host(`example.com`) && PathPrefix(`/whoami/`)"
|
||||||
|
# If the rule matches, applies the middleware
|
||||||
|
middlewares = ["test-user"]
|
||||||
|
# If the rule matches, forward to the whoami service (declared below)
|
||||||
|
service = "whoami"
|
||||||
|
|
||||||
|
[http.middlewares]
|
||||||
|
# Define an authentication mechanism
|
||||||
|
[http.middlewares.test-user.basicAuth]
|
||||||
|
users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/"]
|
||||||
|
|
||||||
|
[http.services]
|
||||||
|
# Define how to reach an existing service on our infrastructure
|
||||||
|
[http.services.whoami.loadBalancer]
|
||||||
|
[[http.services.whoami.loadBalancer.servers]]
|
||||||
|
url = "http://private/whoami-service"
|
||||||
|
|
||||||
|
[tcp]
|
||||||
|
[tcp.routers]
|
||||||
|
[tcp.routers.to-whoami-tcp]
|
||||||
|
rule = "HostSNI(`whoami-tcp.example.com`)"
|
||||||
|
service = "whoami-tcp"
|
||||||
|
[tcp.routers.to-whoami-tcp.tls]
|
||||||
|
|
||||||
|
[tcp.services]
|
||||||
|
[tcp.services.whoami-tcp.loadBalancer]
|
||||||
|
[[tcp.services.whoami-tcp.loadBalancer.servers]]
|
||||||
|
address = "xx.xx.xx.xx:xx"
|
||||||
|
```
|
||||||
|
|
||||||
## Transport configuration
|
## Transport configuration
|
||||||
|
|
||||||
Most of what happens to the connection between the clients and Traefik,
|
Most of what happens to the connection between the clients and Traefik,
|
||||||
|
@ -254,18 +254,18 @@ _Optional, Default=false_
|
||||||
|
|
||||||
`insecureSkipVerify` disables SSL certificate verification.
|
`insecureSkipVerify` disables SSL certificate verification.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[serversTransport]
|
|
||||||
insecureSkipVerify = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
serversTransport:
|
serversTransport:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[serversTransport]
|
||||||
|
insecureSkipVerify = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--serversTransport.insecureSkipVerify=true
|
--serversTransport.insecureSkipVerify=true
|
||||||
|
@ -278,12 +278,6 @@ _Optional_
|
||||||
`rootCAs` is the list of certificates (as file paths, or data bytes)
|
`rootCAs` is the list of certificates (as file paths, or data bytes)
|
||||||
that will be set as Root Certificate Authorities when using a self-signed TLS certificate.
|
that will be set as Root Certificate Authorities when using a self-signed TLS certificate.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[serversTransport]
|
|
||||||
rootCAs = ["foo.crt", "bar.crt"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
serversTransport:
|
serversTransport:
|
||||||
|
@ -292,6 +286,12 @@ serversTransport:
|
||||||
- bar.crt
|
- bar.crt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[serversTransport]
|
||||||
|
rootCAs = ["foo.crt", "bar.crt"]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--serversTransport.rootCAs=foo.crt,bar.crt
|
--serversTransport.rootCAs=foo.crt,bar.crt
|
||||||
|
@ -303,18 +303,18 @@ _Optional, Default=2_
|
||||||
|
|
||||||
If non-zero, `maxIdleConnsPerHost` controls the maximum idle (keep-alive) connections to keep per-host.
|
If non-zero, `maxIdleConnsPerHost` controls the maximum idle (keep-alive) connections to keep per-host.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[serversTransport]
|
|
||||||
maxIdleConnsPerHost = 7
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
serversTransport:
|
serversTransport:
|
||||||
maxIdleConnsPerHost: 7
|
maxIdleConnsPerHost: 7
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[serversTransport]
|
||||||
|
maxIdleConnsPerHost = 7
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--serversTransport.maxIdleConnsPerHost=7
|
--serversTransport.maxIdleConnsPerHost=7
|
||||||
|
@ -331,12 +331,6 @@ _Optional, Default=30s_
|
||||||
`dialTimeout` is the maximum duration allowed for a connection to a backend server to be established.
|
`dialTimeout` is the maximum duration allowed for a connection to a backend server to be established.
|
||||||
Zero means no timeout.
|
Zero means no timeout.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[serversTransport.forwardingTimeouts]
|
|
||||||
dialTimeout = "1s"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
serversTransport:
|
serversTransport:
|
||||||
|
@ -344,6 +338,12 @@ serversTransport:
|
||||||
dialTimeout: 1s
|
dialTimeout: 1s
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[serversTransport.forwardingTimeouts]
|
||||||
|
dialTimeout = "1s"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--serversTransport.forwardingTimeouts.dialTimeout=1s
|
--serversTransport.forwardingTimeouts.dialTimeout=1s
|
||||||
|
@ -358,12 +358,6 @@ after fully writing the request (including its body, if any).
|
||||||
This time does not include the time to read the response body.
|
This time does not include the time to read the response body.
|
||||||
Zero means no timeout.
|
Zero means no timeout.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[serversTransport.forwardingTimeouts]
|
|
||||||
responseHeaderTimeout = "1s"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
serversTransport:
|
serversTransport:
|
||||||
|
@ -371,6 +365,12 @@ serversTransport:
|
||||||
responseHeaderTimeout: 1s
|
responseHeaderTimeout: 1s
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[serversTransport.forwardingTimeouts]
|
||||||
|
responseHeaderTimeout = "1s"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--serversTransport.forwardingTimeouts.responseHeaderTimeout=1s
|
--serversTransport.forwardingTimeouts.responseHeaderTimeout=1s
|
||||||
|
@ -384,12 +384,6 @@ _Optional, Default=90s_
|
||||||
will remain idle before closing itself.
|
will remain idle before closing itself.
|
||||||
Zero means no limit.
|
Zero means no limit.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Static configuration
|
|
||||||
[serversTransport.forwardingTimeouts]
|
|
||||||
idleConnTimeout = "1s"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
serversTransport:
|
serversTransport:
|
||||||
|
@ -397,6 +391,12 @@ serversTransport:
|
||||||
idleConnTimeout: 1s
|
idleConnTimeout: 1s
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[serversTransport.forwardingTimeouts]
|
||||||
|
idleConnTimeout = "1s"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--serversTransport.forwardingTimeouts.idleConnTimeout=1s
|
--serversTransport.forwardingTimeouts.idleConnTimeout=1s
|
||||||
|
|
|
@ -13,15 +13,15 @@ Attach labels to your containers and let Traefik do the rest!
|
||||||
|
|
||||||
Enabling the docker provider
|
Enabling the docker provider
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker: {}
|
docker: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--providers.docker=true
|
--providers.docker=true
|
||||||
```
|
```
|
||||||
|
@ -82,15 +82,6 @@ Attach labels to your containers and let Traefik do the rest!
|
||||||
|
|
||||||
Enabling the docker provider (Swarm Mode)
|
Enabling the docker provider (Swarm Mode)
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[providers.docker]
|
|
||||||
# swarm classic (1.12-)
|
|
||||||
# endpoint = "tcp://127.0.0.1:2375"
|
|
||||||
# docker swarm mode (1.12+)
|
|
||||||
endpoint = "tcp://127.0.0.1:2377"
|
|
||||||
swarmMode = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
docker:
|
docker:
|
||||||
|
@ -101,6 +92,15 @@ Attach labels to your containers and let Traefik do the rest!
|
||||||
swarmMode: true
|
swarmMode: true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[providers.docker]
|
||||||
|
# swarm classic (1.12-)
|
||||||
|
# endpoint = "tcp://127.0.0.1:2375"
|
||||||
|
# docker swarm mode (1.12+)
|
||||||
|
endpoint = "tcp://127.0.0.1:2377"
|
||||||
|
swarmMode = true
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
# swarm classic (1.12-)
|
# swarm classic (1.12-)
|
||||||
# --providers.docker.endpoint=tcp://127.0.0.1:2375
|
# --providers.docker.endpoint=tcp://127.0.0.1:2375
|
||||||
|
|
|
@ -1203,7 +1203,7 @@ Register the `IngressRouteTCP` [kind](../../reference/dynamic-configuration/kube
|
||||||
|
|
||||||
??? example "Examples"
|
??? example "Examples"
|
||||||
|
|
||||||
```yaml tab="IngressRouteTCP"
|
```yaml tab="Only on IngressRouteTCP"
|
||||||
---
|
---
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
kind: IngressRouteTCP
|
kind: IngressRouteTCP
|
||||||
|
@ -1233,38 +1233,7 @@ Register the `IngressRouteTCP` [kind](../../reference/dynamic-configuration/kube
|
||||||
type: ExternalName
|
type: ExternalName
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="ExternalName Service"
|
```yaml tab="On both sides"
|
||||||
---
|
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
|
||||||
kind: IngressRouteTCP
|
|
||||||
metadata:
|
|
||||||
name: test.route
|
|
||||||
namespace: default
|
|
||||||
|
|
||||||
spec:
|
|
||||||
entryPoints:
|
|
||||||
- foo
|
|
||||||
|
|
||||||
routes:
|
|
||||||
- match: HostSNI(`*`)
|
|
||||||
kind: Rule
|
|
||||||
services:
|
|
||||||
- name: external-svc
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: external-svc
|
|
||||||
namespace: default
|
|
||||||
spec:
|
|
||||||
externalName: external.domain
|
|
||||||
type: ExternalName
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="Both sides"
|
|
||||||
---
|
---
|
||||||
apiVersion: traefik.containo.us/v1alpha1
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
kind: IngressRouteTCP
|
kind: IngressRouteTCP
|
||||||
|
|
|
@ -209,7 +209,7 @@ Kubernetes cluster before creating `HTTPRoute` objects.
|
||||||
- headers: # [8]
|
- headers: # [8]
|
||||||
type: Exact # [9]
|
type: Exact # [9]
|
||||||
values: # [10]
|
values: # [10]
|
||||||
- foo: bar
|
foo: bar
|
||||||
forwardTo: # [11]
|
forwardTo: # [11]
|
||||||
- serviceName: whoami # [12]
|
- serviceName: whoami # [12]
|
||||||
weight: 1 # [13]
|
weight: 1 # [13]
|
||||||
|
|
|
@ -376,14 +376,6 @@ TLS can be enabled through the [HTTP options](../entrypoints.md#tls) of an Entry
|
||||||
--entrypoints.websecure.http.tls
|
--entrypoints.websecure.http.tls
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Static configuration
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
|
|
||||||
[entryPoints.websecure.http.tls]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Static configuration
|
# Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -393,6 +385,14 @@ entryPoints:
|
||||||
tls: {}
|
tls: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Static configuration
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
|
||||||
|
[entryPoints.websecure.http.tls]
|
||||||
|
```
|
||||||
|
|
||||||
This way, any Ingress attached to this Entrypoint will have TLS termination by default.
|
This way, any Ingress attached to this Entrypoint will have TLS termination by default.
|
||||||
|
|
||||||
??? example "Configuring Kubernetes Ingress Controller with TLS on Entrypoint"
|
??? example "Configuring Kubernetes Ingress Controller with TLS on Entrypoint"
|
||||||
|
|
|
@ -13,14 +13,6 @@ or act before forwarding the request to the service.
|
||||||
|
|
||||||
??? example "Requests /foo are Handled by service-foo -- Using the [File Provider](../../providers/file.md)"
|
??? example "Requests /foo are Handled by service-foo -- Using the [File Provider](../../providers/file.md)"
|
||||||
|
|
||||||
```toml tab="TOML"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.my-router]
|
|
||||||
rule = "Path(`/foo`)"
|
|
||||||
service = "service-foo"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="YAML"
|
```yaml tab="YAML"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -30,21 +22,18 @@ or act before forwarding the request to the service.
|
||||||
service: service-foo
|
service: service-foo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="TOML"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.my-router]
|
||||||
|
rule = "Path(`/foo`)"
|
||||||
|
service = "service-foo"
|
||||||
|
```
|
||||||
|
|
||||||
??? example "Forwarding all (non-tls) requests on port 3306 to a database service"
|
??? example "Forwarding all (non-tls) requests on port 3306 to a database service"
|
||||||
|
|
||||||
**Dynamic Configuration**
|
**Dynamic Configuration**
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[tcp]
|
|
||||||
[tcp.routers]
|
|
||||||
[tcp.routers.to-database]
|
|
||||||
entryPoints = ["mysql"]
|
|
||||||
# Catch every request (only available rule for non-tls routers. See below.)
|
|
||||||
rule = "HostSNI(`*`)"
|
|
||||||
service = "database"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
tcp:
|
tcp:
|
||||||
|
@ -57,17 +46,19 @@ or act before forwarding the request to the service.
|
||||||
service: database
|
service: database
|
||||||
```
|
```
|
||||||
|
|
||||||
**Static Configuration**
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Static configuration
|
## Dynamic configuration
|
||||||
[entryPoints]
|
[tcp]
|
||||||
[entryPoints.web]
|
[tcp.routers]
|
||||||
address = ":80"
|
[tcp.routers.to-database]
|
||||||
[entryPoints.mysql]
|
entryPoints = ["mysql"]
|
||||||
address = ":3306"
|
# Catch every request (only available rule for non-tls routers. See below.)
|
||||||
|
rule = "HostSNI(`*`)"
|
||||||
|
service = "database"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Static Configuration**
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -77,6 +68,15 @@ or act before forwarding the request to the service.
|
||||||
address: ":3306"
|
address: ":3306"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
[entryPoints.mysql]
|
||||||
|
address = ":3306"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entryPoints.web.address=:80
|
--entryPoints.web.address=:80
|
||||||
|
@ -96,15 +96,6 @@ If you want to limit the router scope to a set of entry points, set the `entryPo
|
||||||
|
|
||||||
**Dynamic Configuration**
|
**Dynamic Configuration**
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.Router-1]
|
|
||||||
# By default, routers listen to every entry points
|
|
||||||
rule = "Host(`example.com`)"
|
|
||||||
service = "service-1"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -115,19 +106,17 @@ If you want to limit the router scope to a set of entry points, set the `entryPo
|
||||||
service: "service-1"
|
service: "service-1"
|
||||||
```
|
```
|
||||||
|
|
||||||
**Static Configuration**
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Static configuration
|
## Dynamic configuration
|
||||||
[entryPoints]
|
[http.routers]
|
||||||
[entryPoints.web]
|
[http.routers.Router-1]
|
||||||
address = ":80"
|
# By default, routers listen to every entry points
|
||||||
[entryPoints.websecure]
|
rule = "Host(`example.com`)"
|
||||||
address = ":443"
|
service = "service-1"
|
||||||
[entryPoints.other]
|
|
||||||
address = ":9090"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Static Configuration**
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -139,6 +128,17 @@ If you want to limit the router scope to a set of entry points, set the `entryPo
|
||||||
address: ":9090"
|
address: ":9090"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
[entryPoints.other]
|
||||||
|
address = ":9090"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entrypoints.web.address=:80
|
--entrypoints.web.address=:80
|
||||||
|
@ -150,16 +150,6 @@ If you want to limit the router scope to a set of entry points, set the `entryPo
|
||||||
|
|
||||||
**Dynamic Configuration**
|
**Dynamic Configuration**
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.Router-1]
|
|
||||||
# won't listen to entry point web
|
|
||||||
entryPoints = ["websecure", "other"]
|
|
||||||
rule = "Host(`example.com`)"
|
|
||||||
service = "service-1"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -173,19 +163,18 @@ If you want to limit the router scope to a set of entry points, set the `entryPo
|
||||||
service: "service-1"
|
service: "service-1"
|
||||||
```
|
```
|
||||||
|
|
||||||
**Static Configuration**
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Static configuration
|
## Dynamic configuration
|
||||||
[entryPoints]
|
[http.routers]
|
||||||
[entryPoints.web]
|
[http.routers.Router-1]
|
||||||
address = ":80"
|
# won't listen to entry point web
|
||||||
[entryPoints.websecure]
|
entryPoints = ["websecure", "other"]
|
||||||
address = ":443"
|
rule = "Host(`example.com`)"
|
||||||
[entryPoints.other]
|
service = "service-1"
|
||||||
address = ":9090"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Static Configuration**
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
entryPoints:
|
entryPoints:
|
||||||
|
@ -197,6 +186,17 @@ If you want to limit the router scope to a set of entry points, set the `entryPo
|
||||||
address: ":9090"
|
address: ":9090"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
[entryPoints.other]
|
||||||
|
address = ":9090"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entrypoints.web.address=:80
|
--entrypoints.web.address=:80
|
||||||
|
@ -285,17 +285,6 @@ A value of `0` for the priority is ignored: `priority = 0` means that the defaul
|
||||||
|
|
||||||
??? info "How default priorities are computed"
|
??? info "How default priorities are computed"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.Router-1]
|
|
||||||
rule = "HostRegexp(`.*\.traefik\.com`)"
|
|
||||||
# ...
|
|
||||||
[http.routers.Router-2]
|
|
||||||
rule = "Host(`foobar.traefik.com`)"
|
|
||||||
# ...
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -308,6 +297,17 @@ A value of `0` for the priority is ignored: `priority = 0` means that the defaul
|
||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.Router-1]
|
||||||
|
rule = "HostRegexp(`.*\.traefik\.com`)"
|
||||||
|
# ...
|
||||||
|
[http.routers.Router-2]
|
||||||
|
rule = "Host(`foobar.traefik.com`)"
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
In this case, all requests with host `foobar.traefik.com` will be routed through `Router-1` instead of `Router-2`.
|
In this case, all requests with host `foobar.traefik.com` will be routed through `Router-1` instead of `Router-2`.
|
||||||
|
|
||||||
| Name | Rule | Priority |
|
| Name | Rule | Priority |
|
||||||
|
@ -321,21 +321,6 @@ A value of `0` for the priority is ignored: `priority = 0` means that the defaul
|
||||||
|
|
||||||
??? example "Set priorities -- using the [File Provider](../../providers/file.md)"
|
??? example "Set priorities -- using the [File Provider](../../providers/file.md)"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.Router-1]
|
|
||||||
rule = "HostRegexp(`.*\.traefik\.com`)"
|
|
||||||
entryPoints = ["web"]
|
|
||||||
service = "service-1"
|
|
||||||
priority = 1
|
|
||||||
[http.routers.Router-2]
|
|
||||||
rule = "Host(`foobar.traefik.com`)"
|
|
||||||
entryPoints = ["web"]
|
|
||||||
priority = 2
|
|
||||||
service = "service-2"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -354,6 +339,21 @@ A value of `0` for the priority is ignored: `priority = 0` means that the defaul
|
||||||
service: service-2
|
service: service-2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.Router-1]
|
||||||
|
rule = "HostRegexp(`.*\.traefik\.com`)"
|
||||||
|
entryPoints = ["web"]
|
||||||
|
service = "service-1"
|
||||||
|
priority = 1
|
||||||
|
[http.routers.Router-2]
|
||||||
|
rule = "Host(`foobar.traefik.com`)"
|
||||||
|
entryPoints = ["web"]
|
||||||
|
priority = 2
|
||||||
|
service = "service-2"
|
||||||
|
```
|
||||||
|
|
||||||
In this configuration, the priority is configured to allow `Router-2` to handle requests with the `foobar.traefik.com` host.
|
In this configuration, the priority is configured to allow `Router-2` to handle requests with the `foobar.traefik.com` host.
|
||||||
|
|
||||||
### Middlewares
|
### Middlewares
|
||||||
|
@ -369,16 +369,6 @@ The middlewares will take effect only if the rule matches, and before forwarding
|
||||||
|
|
||||||
??? example "With a [middleware](../../middlewares/overview.md) -- using the [File Provider](../../providers/file.md)"
|
??? example "With a [middleware](../../middlewares/overview.md) -- using the [File Provider](../../providers/file.md)"
|
||||||
|
|
||||||
```toml tab="TOML"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.my-router]
|
|
||||||
rule = "Path(`/foo`)"
|
|
||||||
# declared elsewhere
|
|
||||||
middlewares = ["authentication"]
|
|
||||||
service = "service-foo"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="YAML"
|
```yaml tab="YAML"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -391,6 +381,16 @@ The middlewares will take effect only if the rule matches, and before forwarding
|
||||||
service: service-foo
|
service: service-foo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="TOML"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.my-router]
|
||||||
|
rule = "Path(`/foo`)"
|
||||||
|
# declared elsewhere
|
||||||
|
middlewares = ["authentication"]
|
||||||
|
service = "service-foo"
|
||||||
|
```
|
||||||
|
|
||||||
### Service
|
### Service
|
||||||
|
|
||||||
Each request must eventually be handled by a [service](../services/index.md),
|
Each request must eventually be handled by a [service](../services/index.md),
|
||||||
|
@ -415,16 +415,6 @@ Traefik will terminate the SSL connections (meaning that it will send decrypted
|
||||||
|
|
||||||
??? example "Configuring the router to accept HTTPS requests only"
|
??? example "Configuring the router to accept HTTPS requests only"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.Router-1]
|
|
||||||
rule = "Host(`foo-domain`) && Path(`/foo-path/`)"
|
|
||||||
service = "service-id"
|
|
||||||
# will terminate the TLS request
|
|
||||||
[http.routers.Router-1.tls]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -436,6 +426,16 @@ Traefik will terminate the SSL connections (meaning that it will send decrypted
|
||||||
tls: {}
|
tls: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.Router-1]
|
||||||
|
rule = "Host(`foo-domain`) && Path(`/foo-path/`)"
|
||||||
|
service = "service-id"
|
||||||
|
# will terminate the TLS request
|
||||||
|
[http.routers.Router-1.tls]
|
||||||
|
```
|
||||||
|
|
||||||
!!! 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:
|
If you need to define the same route for both HTTP and HTTPS requests, you will need to define two different routers:
|
||||||
|
@ -443,20 +443,6 @@ Traefik will terminate the SSL connections (meaning that it will send decrypted
|
||||||
|
|
||||||
??? example "HTTP & HTTPS routes"
|
??? example "HTTP & HTTPS routes"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.my-https-router]
|
|
||||||
rule = "Host(`foo-domain`) && Path(`/foo-path/`)"
|
|
||||||
service = "service-id"
|
|
||||||
# will terminate the TLS request
|
|
||||||
[http.routers.my-https-router.tls]
|
|
||||||
|
|
||||||
[http.routers.my-http-router]
|
|
||||||
rule = "Host(`foo-domain`) && Path(`/foo-path/`)"
|
|
||||||
service = "service-id"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -472,6 +458,20 @@ Traefik will terminate the SSL connections (meaning that it will send decrypted
|
||||||
service: service-id
|
service: service-id
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.my-https-router]
|
||||||
|
rule = "Host(`foo-domain`) && Path(`/foo-path/`)"
|
||||||
|
service = "service-id"
|
||||||
|
# will terminate the TLS request
|
||||||
|
[http.routers.my-https-router.tls]
|
||||||
|
|
||||||
|
[http.routers.my-http-router]
|
||||||
|
rule = "Host(`foo-domain`) && Path(`/foo-path/`)"
|
||||||
|
service = "service-id"
|
||||||
|
```
|
||||||
|
|
||||||
#### `options`
|
#### `options`
|
||||||
|
|
||||||
The `options` field enables fine-grained control of the TLS parameters.
|
The `options` field enables fine-grained control of the TLS parameters.
|
||||||
|
@ -494,28 +494,6 @@ It refers to a [TLS Options](../../https/tls.md#tls-options) and will be applied
|
||||||
|
|
||||||
??? example "Configuring the TLS options"
|
??? example "Configuring the TLS options"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.Router-1]
|
|
||||||
rule = "Host(`foo-domain`) && Path(`/foo-path/`)"
|
|
||||||
service = "service-id"
|
|
||||||
# will terminate the TLS request
|
|
||||||
[http.routers.Router-1.tls]
|
|
||||||
options = "foo"
|
|
||||||
|
|
||||||
[tls.options]
|
|
||||||
[tls.options.foo]
|
|
||||||
minVersion = "VersionTLS12"
|
|
||||||
cipherSuites = [
|
|
||||||
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
||||||
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
||||||
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
||||||
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
||||||
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -539,27 +517,34 @@ It refers to a [TLS Options](../../https/tls.md#tls-options) and will be applied
|
||||||
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.Router-1]
|
||||||
|
rule = "Host(`foo-domain`) && Path(`/foo-path/`)"
|
||||||
|
service = "service-id"
|
||||||
|
# will terminate the TLS request
|
||||||
|
[http.routers.Router-1.tls]
|
||||||
|
options = "foo"
|
||||||
|
|
||||||
|
[tls.options]
|
||||||
|
[tls.options.foo]
|
||||||
|
minVersion = "VersionTLS12"
|
||||||
|
cipherSuites = [
|
||||||
|
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
||||||
|
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
||||||
|
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
||||||
|
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
||||||
|
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
!!! important "Conflicting TLS Options"
|
!!! important "Conflicting TLS Options"
|
||||||
|
|
||||||
Since a TLS options reference is mapped to a host name,
|
Since a TLS options reference is mapped to a host name,
|
||||||
if a configuration introduces a situation where the same host name (from a `Host` rule) gets matched with two TLS options references,
|
if a configuration introduces a situation where the same host name (from a `Host` rule) gets matched with two TLS options references,
|
||||||
a conflict occurs, such as in the example below:
|
a conflict occurs, such as in the example below:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.routerfoo]
|
|
||||||
rule = "Host(`snitest.com`) && Path(`/foo`)"
|
|
||||||
[http.routers.routerfoo.tls]
|
|
||||||
options = "foo"
|
|
||||||
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.routerbar]
|
|
||||||
rule = "Host(`snitest.com`) && Path(`/bar`)"
|
|
||||||
[http.routers.routerbar.tls]
|
|
||||||
options = "bar"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -575,21 +560,27 @@ It refers to a [TLS Options](../../https/tls.md#tls-options) and will be applied
|
||||||
options: bar
|
options: bar
|
||||||
```
|
```
|
||||||
|
|
||||||
If that happens, both mappings are discarded, and the host name (`snitest.com` in this case) for these routers gets associated with the default TLS options instead.
|
|
||||||
|
|
||||||
#### `certResolver`
|
|
||||||
|
|
||||||
If `certResolver` is defined, Traefik will try to generate certificates based on routers `Host` & `HostSNI` rules.
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
[http.routers]
|
[http.routers]
|
||||||
[http.routers.routerfoo]
|
[http.routers.routerfoo]
|
||||||
rule = "Host(`snitest.com`) && Path(`/foo`)"
|
rule = "Host(`snitest.com`) && Path(`/foo`)"
|
||||||
[http.routers.routerfoo.tls]
|
[http.routers.routerfoo.tls]
|
||||||
certResolver = "foo"
|
options = "foo"
|
||||||
|
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.routerbar]
|
||||||
|
rule = "Host(`snitest.com`) && Path(`/bar`)"
|
||||||
|
[http.routers.routerbar.tls]
|
||||||
|
options = "bar"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If that happens, both mappings are discarded, and the host name (`snitest.com` in this case) for these routers gets associated with the default TLS options instead.
|
||||||
|
|
||||||
|
#### `certResolver`
|
||||||
|
|
||||||
|
If `certResolver` is defined, Traefik will try to generate certificates based on routers `Host` & `HostSNI` rules.
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -600,6 +591,15 @@ http:
|
||||||
certResolver: foo
|
certResolver: foo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.routerfoo]
|
||||||
|
rule = "Host(`snitest.com`) && Path(`/foo`)"
|
||||||
|
[http.routers.routerfoo.tls]
|
||||||
|
certResolver = "foo"
|
||||||
|
```
|
||||||
|
|
||||||
!!! info "Multiple Hosts in a Rule"
|
!!! info "Multiple Hosts in a Rule"
|
||||||
The rule ```Host(`test1.example.com`,`test2.example.com`)``` will request a certificate with the main domain `test1.example.com` and SAN `test2.example.com`.
|
The rule ```Host(`test1.example.com`,`test2.example.com`)``` will request a certificate with the main domain `test1.example.com` and SAN `test2.example.com`.
|
||||||
|
|
||||||
|
@ -609,18 +609,6 @@ You can set SANs (alternative domains) for each main domain.
|
||||||
Every domain must have A/AAAA records pointing to Traefik.
|
Every domain must have A/AAAA records pointing to Traefik.
|
||||||
Each domain & SAN will lead to a certificate request.
|
Each domain & SAN will lead to a certificate request.
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[http.routers]
|
|
||||||
[http.routers.routerbar]
|
|
||||||
rule = "Host(`snitest.com`) && Path(`/bar`)"
|
|
||||||
[http.routers.routerbar.tls]
|
|
||||||
certResolver = "bar"
|
|
||||||
[[http.routers.routerbar.tls.domains]]
|
|
||||||
main = "snitest.com"
|
|
||||||
sans = ["*.snitest.com"]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
http:
|
http:
|
||||||
|
@ -635,6 +623,18 @@ http:
|
||||||
- "*.snitest.com"
|
- "*.snitest.com"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[http.routers]
|
||||||
|
[http.routers.routerbar]
|
||||||
|
rule = "Host(`snitest.com`) && Path(`/bar`)"
|
||||||
|
[http.routers.routerbar.tls]
|
||||||
|
certResolver = "bar"
|
||||||
|
[[http.routers.routerbar.tls.domains]]
|
||||||
|
main = "snitest.com"
|
||||||
|
sans = ["*.snitest.com"]
|
||||||
|
```
|
||||||
|
|
||||||
[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).
|
||||||
|
|
||||||
|
@ -669,18 +669,6 @@ If you want to limit the router scope to a set of entry points, set the entry po
|
||||||
|
|
||||||
**Dynamic Configuration**
|
**Dynamic Configuration**
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
|
|
||||||
[tcp.routers]
|
|
||||||
[tcp.routers.Router-1]
|
|
||||||
# By default, routers listen to every entrypoints
|
|
||||||
rule = "HostSNI(`example.com`)"
|
|
||||||
service = "service-1"
|
|
||||||
# will route TLS requests (and ignore non tls requests)
|
|
||||||
[tcp.routers.Router-1.tls]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
|
|
||||||
|
@ -694,20 +682,20 @@ If you want to limit the router scope to a set of entry points, set the entry po
|
||||||
tls: {}
|
tls: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
**Static Configuration**
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Static configuration
|
## Dynamic configuration
|
||||||
|
|
||||||
[entryPoints]
|
[tcp.routers]
|
||||||
[entryPoints.web]
|
[tcp.routers.Router-1]
|
||||||
address = ":80"
|
# By default, routers listen to every entrypoints
|
||||||
[entryPoints.websecure]
|
rule = "HostSNI(`example.com`)"
|
||||||
address = ":443"
|
service = "service-1"
|
||||||
[entryPoints.other]
|
# will route TLS requests (and ignore non tls requests)
|
||||||
address = ":9090"
|
[tcp.routers.Router-1.tls]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Static Configuration**
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
|
|
||||||
|
@ -720,6 +708,18 @@ If you want to limit the router scope to a set of entry points, set the entry po
|
||||||
address: ":9090"
|
address: ":9090"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
[entryPoints.other]
|
||||||
|
address = ":9090"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entrypoints.web.address=:80
|
--entrypoints.web.address=:80
|
||||||
|
@ -731,18 +731,6 @@ If you want to limit the router scope to a set of entry points, set the entry po
|
||||||
|
|
||||||
**Dynamic Configuration**
|
**Dynamic Configuration**
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[tcp.routers]
|
|
||||||
[tcp.routers.Router-1]
|
|
||||||
# won't listen to entry point web
|
|
||||||
entryPoints = ["websecure", "other"]
|
|
||||||
rule = "HostSNI(`example.com`)"
|
|
||||||
service = "service-1"
|
|
||||||
# will route TLS requests (and ignore non tls requests)
|
|
||||||
[tcp.routers.Router-1.tls]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
tcp:
|
tcp:
|
||||||
|
@ -758,20 +746,20 @@ If you want to limit the router scope to a set of entry points, set the entry po
|
||||||
tls: {}
|
tls: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
**Static Configuration**
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Static configuration
|
## Dynamic configuration
|
||||||
|
[tcp.routers]
|
||||||
[entryPoints]
|
[tcp.routers.Router-1]
|
||||||
[entryPoints.web]
|
# won't listen to entry point web
|
||||||
address = ":80"
|
entryPoints = ["websecure", "other"]
|
||||||
[entryPoints.websecure]
|
rule = "HostSNI(`example.com`)"
|
||||||
address = ":443"
|
service = "service-1"
|
||||||
[entryPoints.other]
|
# will route TLS requests (and ignore non tls requests)
|
||||||
address = ":9090"
|
[tcp.routers.Router-1.tls]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Static Configuration**
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
|
|
||||||
|
@ -784,6 +772,18 @@ If you want to limit the router scope to a set of entry points, set the entry po
|
||||||
address: ":9090"
|
address: ":9090"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":443"
|
||||||
|
[entryPoints.other]
|
||||||
|
address = ":9090"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entrypoints.web.address=:80
|
--entrypoints.web.address=:80
|
||||||
|
@ -861,16 +861,6 @@ By default, a router with a TLS section will terminate the TLS connections, mean
|
||||||
|
|
||||||
??? example "Router for TLS requests"
|
??? example "Router for TLS requests"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[tcp.routers]
|
|
||||||
[tcp.routers.Router-1]
|
|
||||||
rule = "HostSNI(`foo-domain`)"
|
|
||||||
service = "service-id"
|
|
||||||
# will terminate the TLS request by default
|
|
||||||
[tcp.routers.Router-1.tls]
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
tcp:
|
tcp:
|
||||||
|
@ -882,6 +872,16 @@ By default, a router with a TLS section will terminate the TLS connections, mean
|
||||||
tls: {}
|
tls: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[tcp.routers]
|
||||||
|
[tcp.routers.Router-1]
|
||||||
|
rule = "HostSNI(`foo-domain`)"
|
||||||
|
service = "service-id"
|
||||||
|
# will terminate the TLS request by default
|
||||||
|
[tcp.routers.Router-1.tls]
|
||||||
|
```
|
||||||
|
|
||||||
#### `passthrough`
|
#### `passthrough`
|
||||||
|
|
||||||
As seen above, a TLS router will terminate the TLS connection by default.
|
As seen above, a TLS router will terminate the TLS connection by default.
|
||||||
|
@ -891,16 +891,6 @@ It defaults to `false`.
|
||||||
|
|
||||||
??? example "Configuring passthrough"
|
??? example "Configuring passthrough"
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[tcp.routers]
|
|
||||||
[tcp.routers.Router-1]
|
|
||||||
rule = "HostSNI(`foo-domain`)"
|
|
||||||
service = "service-id"
|
|
||||||
[tcp.routers.Router-1.tls]
|
|
||||||
passthrough = true
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
tcp:
|
tcp:
|
||||||
|
@ -912,35 +902,23 @@ It defaults to `false`.
|
||||||
passthrough: true
|
passthrough: true
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `options`
|
|
||||||
|
|
||||||
The `options` field enables fine-grained control of the TLS parameters.
|
|
||||||
It refers to a [TLS Options](../../https/tls.md#tls-options) and will be applied only if a `HostSNI` rule is defined.
|
|
||||||
|
|
||||||
!!! example "Configuring the tls options"
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
[tcp.routers]
|
[tcp.routers]
|
||||||
[tcp.routers.Router-1]
|
[tcp.routers.Router-1]
|
||||||
rule = "HostSNI(`foo-domain`)"
|
rule = "HostSNI(`foo-domain`)"
|
||||||
service = "service-id"
|
service = "service-id"
|
||||||
# will terminate the TLS request
|
|
||||||
[tcp.routers.Router-1.tls]
|
[tcp.routers.Router-1.tls]
|
||||||
options = "foo"
|
passthrough = true
|
||||||
|
|
||||||
[tls.options]
|
|
||||||
[tls.options.foo]
|
|
||||||
minVersion = "VersionTLS12"
|
|
||||||
cipherSuites = [
|
|
||||||
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
|
||||||
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
||||||
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
|
||||||
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
|
||||||
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
|
||||||
]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### `options`
|
||||||
|
|
||||||
|
The `options` field enables fine-grained control of the TLS parameters.
|
||||||
|
It refers to a [TLS Options](../../https/tls.md#tls-options) and will be applied only if a `HostSNI` rule is defined.
|
||||||
|
|
||||||
|
!!! example "Configuring the tls options"
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
tcp:
|
tcp:
|
||||||
|
@ -964,19 +942,32 @@ It refers to a [TLS Options](../../https/tls.md#tls-options) and will be applied
|
||||||
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `certResolver`
|
|
||||||
|
|
||||||
See [`certResolver` for HTTP router](./index.md#certresolver) for more information.
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
[tcp.routers]
|
[tcp.routers]
|
||||||
[tcp.routers.routerfoo]
|
[tcp.routers.Router-1]
|
||||||
rule = "HostSNI(`snitest.com`)"
|
rule = "HostSNI(`foo-domain`)"
|
||||||
[tcp.routers.routerfoo.tls]
|
service = "service-id"
|
||||||
certResolver = "foo"
|
# will terminate the TLS request
|
||||||
|
[tcp.routers.Router-1.tls]
|
||||||
|
options = "foo"
|
||||||
|
|
||||||
|
[tls.options]
|
||||||
|
[tls.options.foo]
|
||||||
|
minVersion = "VersionTLS12"
|
||||||
|
cipherSuites = [
|
||||||
|
"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
|
||||||
|
"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
|
||||||
|
"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
|
||||||
|
"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
|
||||||
|
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
|
||||||
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### `certResolver`
|
||||||
|
|
||||||
|
See [`certResolver` for HTTP router](./index.md#certresolver) for more information.
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
tcp:
|
tcp:
|
||||||
|
@ -987,22 +978,19 @@ tcp:
|
||||||
certResolver: foo
|
certResolver: foo
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `domains`
|
|
||||||
|
|
||||||
See [`domains` for HTTP router](./index.md#domains) for more information.
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
[tcp.routers]
|
[tcp.routers]
|
||||||
[tcp.routers.routerbar]
|
[tcp.routers.routerfoo]
|
||||||
rule = "HostSNI(`snitest.com`)"
|
rule = "HostSNI(`snitest.com`)"
|
||||||
[tcp.routers.routerbar.tls]
|
[tcp.routers.routerfoo.tls]
|
||||||
certResolver = "bar"
|
certResolver = "foo"
|
||||||
[[tcp.routers.routerbar.tls.domains]]
|
|
||||||
main = "snitest.com"
|
|
||||||
sans = ["*.snitest.com"]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### `domains`
|
||||||
|
|
||||||
|
See [`domains` for HTTP router](./index.md#domains) for more information.
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
tcp:
|
tcp:
|
||||||
|
@ -1017,6 +1005,18 @@ tcp:
|
||||||
- "*.snitest.com"
|
- "*.snitest.com"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Dynamic configuration
|
||||||
|
[tcp.routers]
|
||||||
|
[tcp.routers.routerbar]
|
||||||
|
rule = "HostSNI(`snitest.com`)"
|
||||||
|
[tcp.routers.routerbar.tls]
|
||||||
|
certResolver = "bar"
|
||||||
|
[[tcp.routers.routerbar.tls.domains]]
|
||||||
|
main = "snitest.com"
|
||||||
|
sans = ["*.snitest.com"]
|
||||||
|
```
|
||||||
|
|
||||||
## Configuring UDP Routers
|
## Configuring UDP Routers
|
||||||
|
|
||||||
!!! warning "The character `@` is not allowed in the router name"
|
!!! warning "The character `@` is not allowed in the router name"
|
||||||
|
@ -1050,16 +1050,6 @@ If one wants to limit the router scope to a set of entry points, one should set
|
||||||
|
|
||||||
**Dynamic Configuration**
|
**Dynamic Configuration**
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
|
|
||||||
[udp.routers]
|
|
||||||
[udp.routers.Router-1]
|
|
||||||
# By default, routers listen to all UDP entrypoints,
|
|
||||||
# i.e. "other", and "streaming".
|
|
||||||
service = "service-1"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
|
|
||||||
|
@ -1071,22 +1061,18 @@ If one wants to limit the router scope to a set of entry points, one should set
|
||||||
service: "service-1"
|
service: "service-1"
|
||||||
```
|
```
|
||||||
|
|
||||||
**Static Configuration**
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Static configuration
|
## Dynamic configuration
|
||||||
|
|
||||||
[entryPoints]
|
[udp.routers]
|
||||||
# not used by UDP routers
|
[udp.routers.Router-1]
|
||||||
[entryPoints.web]
|
# By default, routers listen to all UDP entrypoints,
|
||||||
address = ":80"
|
# i.e. "other", and "streaming".
|
||||||
# used by UDP routers
|
service = "service-1"
|
||||||
[entryPoints.other]
|
|
||||||
address = ":9090/udp"
|
|
||||||
[entryPoints.streaming]
|
|
||||||
address = ":9191/udp"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Static Configuration**
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
|
|
||||||
|
@ -1101,6 +1087,20 @@ If one wants to limit the router scope to a set of entry points, one should set
|
||||||
address: ":9191/udp"
|
address: ":9191/udp"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
|
||||||
|
[entryPoints]
|
||||||
|
# not used by UDP routers
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
# used by UDP routers
|
||||||
|
[entryPoints.other]
|
||||||
|
address = ":9090/udp"
|
||||||
|
[entryPoints.streaming]
|
||||||
|
address = ":9191/udp"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entrypoints.web.address=":80"
|
--entrypoints.web.address=":80"
|
||||||
|
@ -1112,15 +1112,6 @@ If one wants to limit the router scope to a set of entry points, one should set
|
||||||
|
|
||||||
**Dynamic Configuration**
|
**Dynamic Configuration**
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
## Dynamic configuration
|
|
||||||
[udp.routers]
|
|
||||||
[udp.routers.Router-1]
|
|
||||||
# does not listen on "other" entry point
|
|
||||||
entryPoints = ["streaming"]
|
|
||||||
service = "service-1"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Dynamic configuration
|
## Dynamic configuration
|
||||||
udp:
|
udp:
|
||||||
|
@ -1132,20 +1123,17 @@ If one wants to limit the router scope to a set of entry points, one should set
|
||||||
service: "service-1"
|
service: "service-1"
|
||||||
```
|
```
|
||||||
|
|
||||||
**Static Configuration**
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
## Static configuration
|
## Dynamic configuration
|
||||||
|
[udp.routers]
|
||||||
[entryPoints]
|
[udp.routers.Router-1]
|
||||||
[entryPoints.web]
|
# does not listen on "other" entry point
|
||||||
address = ":80"
|
entryPoints = ["streaming"]
|
||||||
[entryPoints.other]
|
service = "service-1"
|
||||||
address = ":9090/udp"
|
|
||||||
[entryPoints.streaming]
|
|
||||||
address = ":9191/udp"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Static Configuration**
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
|
|
||||||
|
@ -1158,6 +1146,18 @@ If one wants to limit the router scope to a set of entry points, one should set
|
||||||
address: ":9191/udp"
|
address: ":9191/udp"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
## Static configuration
|
||||||
|
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
[entryPoints.other]
|
||||||
|
address = ":9090/udp"
|
||||||
|
[entryPoints.streaming]
|
||||||
|
address = ":9191/udp"
|
||||||
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
## Static configuration
|
## Static configuration
|
||||||
--entrypoints.web.address=":80"
|
--entrypoints.web.address=":80"
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -8,17 +8,6 @@ This section explains how to use Traefik as reverse proxy for gRPC application.
|
||||||
|
|
||||||
Static configuration:
|
Static configuration:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
[api]
|
|
||||||
|
|
||||||
[providers.file]
|
|
||||||
directory = "/path/to/dynamic/config"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
web:
|
web:
|
||||||
|
@ -31,13 +20,40 @@ providers:
|
||||||
api: {}
|
api: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.web]
|
||||||
|
address = ":80"
|
||||||
|
|
||||||
|
[api]
|
||||||
|
|
||||||
|
[providers.file]
|
||||||
|
directory = "/path/to/dynamic/config"
|
||||||
|
```
|
||||||
|
|
||||||
```yaml tab="CLI"
|
```yaml tab="CLI"
|
||||||
--entryPoints.web.address=:80
|
--entryPoints.web.address=:80
|
||||||
--providers.file.directory=/path/to/dynamic/config
|
--providers.file.directory=/path/to/dynamic/config
|
||||||
--api.insecure=true
|
--api.insecure=true
|
||||||
```
|
```
|
||||||
|
|
||||||
`/path/to/dynamic/config/dynamic_conf.{toml,yml}`:
|
`/path/to/dynamic/config/dynamic_conf.{yml,toml}`:
|
||||||
|
|
||||||
|
```yaml tab="YAML"
|
||||||
|
## dynamic configuration ##
|
||||||
|
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
routerTest:
|
||||||
|
service: srv-grpc
|
||||||
|
rule: Host(`frontend.local`)
|
||||||
|
|
||||||
|
services:
|
||||||
|
srv-grpc:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
- url: h2c://backend.local:8080
|
||||||
|
```
|
||||||
|
|
||||||
```toml tab="TOML"
|
```toml tab="TOML"
|
||||||
## dynamic configuration ##
|
## dynamic configuration ##
|
||||||
|
@ -56,22 +72,6 @@ api: {}
|
||||||
url = "h2c://backend.local:8080"
|
url = "h2c://backend.local:8080"
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="YAML"
|
|
||||||
## dynamic configuration ##
|
|
||||||
|
|
||||||
http:
|
|
||||||
routers:
|
|
||||||
routerTest:
|
|
||||||
service: srv-grpc
|
|
||||||
rule: Host(`frontend.local`)
|
|
||||||
|
|
||||||
services:
|
|
||||||
srv-grpc:
|
|
||||||
loadBalancer:
|
|
||||||
servers:
|
|
||||||
- url: h2c://backend.local:8080
|
|
||||||
```
|
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
For providers with labels, you will have to specify the `traefik.http.services.<my-service-name>.loadbalancer.server.scheme=h2c`
|
For providers with labels, you will have to specify the `traefik.http.services.<my-service-name>.loadbalancer.server.scheme=h2c`
|
||||||
|
|
||||||
|
@ -119,22 +119,6 @@ At last, we configure our Traefik instance to use both self-signed certificates.
|
||||||
|
|
||||||
Static configuration:
|
Static configuration:
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[entryPoints]
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":4443"
|
|
||||||
|
|
||||||
|
|
||||||
[serversTransport]
|
|
||||||
# For secure connection on backend.local
|
|
||||||
rootCAs = [ "./backend.cert" ]
|
|
||||||
|
|
||||||
[api]
|
|
||||||
|
|
||||||
[provider.file]
|
|
||||||
directory = "/path/to/dynamic/config"
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
websecure:
|
websecure:
|
||||||
|
@ -152,6 +136,22 @@ providers:
|
||||||
api: {}
|
api: {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[entryPoints]
|
||||||
|
[entryPoints.websecure]
|
||||||
|
address = ":4443"
|
||||||
|
|
||||||
|
|
||||||
|
[serversTransport]
|
||||||
|
# For secure connection on backend.local
|
||||||
|
rootCAs = [ "./backend.cert" ]
|
||||||
|
|
||||||
|
[api]
|
||||||
|
|
||||||
|
[provider.file]
|
||||||
|
directory = "/path/to/dynamic/config"
|
||||||
|
```
|
||||||
|
|
||||||
```yaml tab="CLI"
|
```yaml tab="CLI"
|
||||||
--entryPoints.websecure.address=:4443
|
--entryPoints.websecure.address=:4443
|
||||||
# For secure connection on backend.local
|
# For secure connection on backend.local
|
||||||
|
@ -160,7 +160,28 @@ api: {}
|
||||||
--api.insecure=true
|
--api.insecure=true
|
||||||
```
|
```
|
||||||
|
|
||||||
`/path/to/dynamic/config/dynamic_conf.{toml,yml}`:
|
`/path/to/dynamic/config/dynamic_conf.{yml,toml}`:
|
||||||
|
|
||||||
|
```yaml tab="YAML"
|
||||||
|
## dynamic configuration ##
|
||||||
|
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
routerTest:
|
||||||
|
service: srv-grpc
|
||||||
|
rule: Host(`frontend.local`)
|
||||||
|
services:
|
||||||
|
srv-grpc:
|
||||||
|
loadBalancer:
|
||||||
|
servers:
|
||||||
|
# Access on backend with HTTPS
|
||||||
|
- url: https://backend.local:8080
|
||||||
|
tls:
|
||||||
|
# For secure connection on frontend.local
|
||||||
|
certificates:
|
||||||
|
- certfile: ./frontend.cert
|
||||||
|
keyfile: ./frontend.key
|
||||||
|
```
|
||||||
|
|
||||||
```toml tab="TOML"
|
```toml tab="TOML"
|
||||||
## dynamic configuration ##
|
## dynamic configuration ##
|
||||||
|
@ -187,27 +208,6 @@ api: {}
|
||||||
keyFile = "./frontend.key"
|
keyFile = "./frontend.key"
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml tab="YAML"
|
|
||||||
## dynamic configuration ##
|
|
||||||
|
|
||||||
http:
|
|
||||||
routers:
|
|
||||||
routerTest:
|
|
||||||
service: srv-grpc
|
|
||||||
rule: Host(`frontend.local`)
|
|
||||||
services:
|
|
||||||
srv-grpc:
|
|
||||||
loadBalancer:
|
|
||||||
servers:
|
|
||||||
# Access on backend with HTTPS
|
|
||||||
- url: https://backend.local:8080
|
|
||||||
tls:
|
|
||||||
# For secure connection on frontend.local
|
|
||||||
certificates:
|
|
||||||
- certfile: ./frontend.cert
|
|
||||||
keyfile: ./frontend.key
|
|
||||||
```
|
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
With some services, the server URLs use the IP, so you may need to configure `insecureSkipVerify` instead of the `rootCAs` to activate HTTPS without hostname verification.
|
With some services, the server URLs use the IP, so you may need to configure `insecureSkipVerify` instead of the `rootCAs` to activate HTTPS without hostname verification.
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ nav:
|
||||||
- 'Quick Start': 'getting-started/quick-start.md'
|
- 'Quick Start': 'getting-started/quick-start.md'
|
||||||
- 'Configuration Introduction': 'getting-started/configuration-overview.md'
|
- 'Configuration Introduction': 'getting-started/configuration-overview.md'
|
||||||
- 'Install Traefik': 'getting-started/install-traefik.md'
|
- 'Install Traefik': 'getting-started/install-traefik.md'
|
||||||
|
- 'Frequently Asked Questions': 'getting-started/faq.md'
|
||||||
- 'Configuration Discovery':
|
- 'Configuration Discovery':
|
||||||
- 'Overview': 'providers/overview.md'
|
- 'Overview': 'providers/overview.md'
|
||||||
- 'Docker': 'providers/docker.md'
|
- 'Docker': 'providers/docker.md'
|
||||||
|
|
10
go.mod
10
go.mod
|
@ -6,7 +6,7 @@ go 1.16
|
||||||
require (
|
require (
|
||||||
github.com/BurntSushi/toml v0.3.1
|
github.com/BurntSushi/toml v0.3.1
|
||||||
github.com/ExpediaDotCom/haystack-client-go v0.0.0-20190315171017-e7edbdf53a61
|
github.com/ExpediaDotCom/haystack-client-go v0.0.0-20190315171017-e7edbdf53a61
|
||||||
github.com/Masterminds/sprig/v3 v3.2.0
|
github.com/Masterminds/sprig/v3 v3.2.2
|
||||||
github.com/Microsoft/hcsshim v0.8.7 // indirect
|
github.com/Microsoft/hcsshim v0.8.7 // indirect
|
||||||
github.com/Shopify/sarama v1.23.1 // indirect
|
github.com/Shopify/sarama v1.23.1 // indirect
|
||||||
github.com/abbot/go-http-auth v0.0.0-00010101000000-000000000000
|
github.com/abbot/go-http-auth v0.0.0-00010101000000-000000000000
|
||||||
|
@ -30,7 +30,7 @@ require (
|
||||||
github.com/elazarl/go-bindata-assetfs v1.0.0
|
github.com/elazarl/go-bindata-assetfs v1.0.0
|
||||||
github.com/fatih/structs v1.1.0
|
github.com/fatih/structs v1.1.0
|
||||||
github.com/gambol99/go-marathon v0.0.0-20180614232016-99a156b96fb2
|
github.com/gambol99/go-marathon v0.0.0-20180614232016-99a156b96fb2
|
||||||
github.com/go-acme/lego/v4 v4.3.1
|
github.com/go-acme/lego/v4 v4.4.0
|
||||||
github.com/go-check/check v0.0.0-00010101000000-000000000000
|
github.com/go-check/check v0.0.0-00010101000000-000000000000
|
||||||
github.com/go-kit/kit v0.10.1-0.20200915143503-439c4d2ed3ea
|
github.com/go-kit/kit v0.10.1-0.20200915143503-439c4d2ed3ea
|
||||||
github.com/golang/protobuf v1.4.3
|
github.com/golang/protobuf v1.4.3
|
||||||
|
@ -70,7 +70,7 @@ require (
|
||||||
github.com/stvp/go-udp-testing v0.0.0-20191102171040-06b61409b154
|
github.com/stvp/go-udp-testing v0.0.0-20191102171040-06b61409b154
|
||||||
github.com/tinylib/msgp v1.0.2 // indirect
|
github.com/tinylib/msgp v1.0.2 // indirect
|
||||||
github.com/traefik/gziphandler v1.1.2-0.20210212101304-175e0fad6888
|
github.com/traefik/gziphandler v1.1.2-0.20210212101304-175e0fad6888
|
||||||
github.com/traefik/paerser v0.1.2
|
github.com/traefik/paerser v0.1.4
|
||||||
github.com/traefik/yaegi v0.9.17
|
github.com/traefik/yaegi v0.9.17
|
||||||
github.com/uber/jaeger-client-go v2.29.1+incompatible
|
github.com/uber/jaeger-client-go v2.29.1+incompatible
|
||||||
github.com/uber/jaeger-lib v2.2.0+incompatible
|
github.com/uber/jaeger-lib v2.2.0+incompatible
|
||||||
|
@ -81,9 +81,9 @@ require (
|
||||||
github.com/vulcand/predicate v1.1.0
|
github.com/vulcand/predicate v1.1.0
|
||||||
go.elastic.co/apm v1.11.0
|
go.elastic.co/apm v1.11.0
|
||||||
go.elastic.co/apm/module/apmot v1.11.0
|
go.elastic.co/apm/module/apmot v1.11.0
|
||||||
golang.org/x/mod v0.3.0
|
golang.org/x/mod v0.4.2
|
||||||
golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d
|
golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d
|
||||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324
|
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba
|
||||||
golang.org/x/tools v0.0.0-20200904185747-39188db58858
|
golang.org/x/tools v0.0.0-20200904185747-39188db58858
|
||||||
google.golang.org/grpc v1.27.1
|
google.golang.org/grpc v1.27.1
|
||||||
gopkg.in/DataDog/dd-trace-go.v1 v1.19.0
|
gopkg.in/DataDog/dd-trace-go.v1 v1.19.0
|
||||||
|
|
57
go.sum
57
go.sum
|
@ -79,14 +79,12 @@ github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/uf
|
||||||
github.com/ExpediaDotCom/haystack-client-go v0.0.0-20190315171017-e7edbdf53a61 h1:1NIUJ+MAMpqDr4LWIfNsoJR+G7zg/8GZVwuRkmJxtTc=
|
github.com/ExpediaDotCom/haystack-client-go v0.0.0-20190315171017-e7edbdf53a61 h1:1NIUJ+MAMpqDr4LWIfNsoJR+G7zg/8GZVwuRkmJxtTc=
|
||||||
github.com/ExpediaDotCom/haystack-client-go v0.0.0-20190315171017-e7edbdf53a61/go.mod h1:62qWSDaEI0BLykU+zQza5CAKgW0lOy9oBSz3/DvYz4w=
|
github.com/ExpediaDotCom/haystack-client-go v0.0.0-20190315171017-e7edbdf53a61/go.mod h1:62qWSDaEI0BLykU+zQza5CAKgW0lOy9oBSz3/DvYz4w=
|
||||||
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
||||||
github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg=
|
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
|
||||||
github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
|
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
|
||||||
github.com/Masterminds/semver/v3 v3.1.0/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
|
|
||||||
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
|
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
|
||||||
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
|
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
|
||||||
github.com/Masterminds/sprig/v3 v3.1.0/go.mod h1:ONGMf7UfYGAbMXCZmQLy8x3lCDIPrEZE/rU8pmrbihA=
|
github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=
|
||||||
github.com/Masterminds/sprig/v3 v3.2.0 h1:P1ekkbuU73Ui/wS0nK1HOM37hh4xdfZo485UPf8rc+Y=
|
github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
|
||||||
github.com/Masterminds/sprig/v3 v3.2.0/go.mod h1:tWhwTbUTndesPNeF0C900vKoq283u6zp4APT9vaF3SI=
|
|
||||||
github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 h1:ygIc8M6trr62pF5DucadTWGdEB4mEyvzi0e2nbcmcyA=
|
github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 h1:ygIc8M6trr62pF5DucadTWGdEB4mEyvzi0e2nbcmcyA=
|
||||||
github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
|
github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
|
||||||
github.com/Microsoft/hcsshim v0.8.7 h1:ptnOoufxGSzauVTsdE+wMYnCWA301PdoN4xg5oRdZpg=
|
github.com/Microsoft/hcsshim v0.8.7 h1:ptnOoufxGSzauVTsdE+wMYnCWA301PdoN4xg5oRdZpg=
|
||||||
|
@ -244,6 +242,7 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm
|
||||||
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
|
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
|
||||||
github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4=
|
github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4=
|
||||||
github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
|
github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
|
||||||
|
github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
|
||||||
github.com/dnsimple/dnsimple-go v0.63.0 h1:0doY8VW/ckRIMTmOw4E1vwqo+bhtjDzvh1pU2ZteFGA=
|
github.com/dnsimple/dnsimple-go v0.63.0 h1:0doY8VW/ckRIMTmOw4E1vwqo+bhtjDzvh1pU2ZteFGA=
|
||||||
github.com/dnsimple/dnsimple-go v0.63.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg=
|
github.com/dnsimple/dnsimple-go v0.63.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg=
|
||||||
github.com/docker/cli v0.0.0-20200221155518-740919cc7fc0 h1:hlGHcYGaaHs/yffSubcUKlp8TyV1v7qhcZZ5nGNQ2Fw=
|
github.com/docker/cli v0.0.0-20200221155518-740919cc7fc0 h1:hlGHcYGaaHs/yffSubcUKlp8TyV1v7qhcZZ5nGNQ2Fw=
|
||||||
|
@ -327,8 +326,8 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME
|
||||||
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
|
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
|
||||||
github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
|
github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
|
||||||
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
|
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
|
||||||
github.com/go-acme/lego/v4 v4.3.1 h1:rzmg0Gpy25B/exXjl+KgpG5Xt6wN5rFTLjRf/Uf3pfg=
|
github.com/go-acme/lego/v4 v4.4.0 h1:uHhU5LpOYQOdp3aDU+XY2bajseu8fuExphTL1Ss6/Fc=
|
||||||
github.com/go-acme/lego/v4 v4.3.1/go.mod h1:tySA24ifl6bI7kZ0+ocGtTIv4H1yhYVFAgyMHF2DSRg=
|
github.com/go-acme/lego/v4 v4.4.0/go.mod h1:l3+tFUFZb590dWcqhWZegynUthtaHJbG2fevUpoOOE0=
|
||||||
github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
|
github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
|
||||||
github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s=
|
github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s=
|
||||||
github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=
|
github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=
|
||||||
|
@ -401,6 +400,8 @@ github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr
|
||||||
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
||||||
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
|
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
|
||||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||||
|
github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b h1:/vQ+oYKu+JoyaMPDsv5FzwuL2wwWBgBbtj/YLCi4LuA=
|
||||||
|
github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b/go.mod h1:Xo4aNUOrJnVruqWQJBtW6+bTBDTniY8yZum5rF3b5jw=
|
||||||
github.com/gobuffalo/flect v0.2.0 h1:EWCvMGGxOjsgwlWaP+f4+Hh6yrrte7JeFL2S6b+0hdM=
|
github.com/gobuffalo/flect v0.2.0 h1:EWCvMGGxOjsgwlWaP+f4+Hh6yrrte7JeFL2S6b+0hdM=
|
||||||
github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80=
|
github.com/gobuffalo/flect v0.2.0/go.mod h1:W3K3X9ksuZfir8f/LrfVtWmCDQFfayuylOJ7sz/Fj80=
|
||||||
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
|
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
|
||||||
|
@ -543,8 +544,8 @@ github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:
|
||||||
github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
|
github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
|
||||||
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
|
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
|
||||||
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
|
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
|
||||||
github.com/hashicorp/go-retryablehttp v0.6.8 h1:92lWxgpa+fF3FozM4B3UZtHZMJX8T5XT+TFdCxsPyWs=
|
github.com/hashicorp/go-retryablehttp v0.6.6 h1:HJunrbHTDDbBb/ay4kxa1n+dLmttUlnP3V9oNE4hmsM=
|
||||||
github.com/hashicorp/go-retryablehttp v0.6.8/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
|
github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
|
||||||
github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI=
|
github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI=
|
||||||
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
|
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
|
||||||
github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs=
|
github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs=
|
||||||
|
@ -577,7 +578,6 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
|
||||||
github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df h1:MZf03xP9WdakyXhOWuAD5uPK3wHh96wCsqe3hCMKh8E=
|
github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df h1:MZf03xP9WdakyXhOWuAD5uPK3wHh96wCsqe3hCMKh8E=
|
||||||
github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4=
|
github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4=
|
||||||
github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||||
github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
|
||||||
github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||||
github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA=
|
github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA=
|
||||||
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
|
||||||
|
@ -585,6 +585,8 @@ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NH
|
||||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA=
|
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA=
|
||||||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||||
|
github.com/infobloxopen/infoblox-go-client v1.1.1 h1:728A6LbLjptj/7kZjHyIxQnm768PWHfGFm0HH8FnbtU=
|
||||||
|
github.com/infobloxopen/infoblox-go-client v1.1.1/go.mod h1:BXiw7S2b9qJoM8MS40vfgCNB2NLHGusk1DtO16BD9zI=
|
||||||
github.com/instana/go-sensor v1.5.1 h1:GLxYsYiDWD15RSXDHS70VvTVU/CbwUimWrK6/e4eBPQ=
|
github.com/instana/go-sensor v1.5.1 h1:GLxYsYiDWD15RSXDHS70VvTVU/CbwUimWrK6/e4eBPQ=
|
||||||
github.com/instana/go-sensor v1.5.1/go.mod h1:5dEieTqu59XZr2/X53xF2Px4v83aSRRZa/47VbxAVa4=
|
github.com/instana/go-sensor v1.5.1/go.mod h1:5dEieTqu59XZr2/X53xF2Px4v83aSRRZa/47VbxAVa4=
|
||||||
github.com/jarcoal/httpmock v1.0.6 h1:e81vOSexXU3mJuJ4l//geOmKIt+Vkxerk1feQBC8D0g=
|
github.com/jarcoal/httpmock v1.0.6 h1:e81vOSexXU3mJuJ4l//geOmKIt+Vkxerk1feQBC8D0g=
|
||||||
|
@ -763,6 +765,8 @@ github.com/nrdcg/goinwx v0.8.1 h1:20EQ/JaGFnSKwiDH2JzjIpicffl3cPk6imJBDqVBVtU=
|
||||||
github.com/nrdcg/goinwx v0.8.1/go.mod h1:tILVc10gieBp/5PMvbcYeXM6pVQ+c9jxDZnpaR1UW7c=
|
github.com/nrdcg/goinwx v0.8.1/go.mod h1:tILVc10gieBp/5PMvbcYeXM6pVQ+c9jxDZnpaR1UW7c=
|
||||||
github.com/nrdcg/namesilo v0.2.1 h1:kLjCjsufdW/IlC+iSfAqj0iQGgKjlbUUeDJio5Y6eMg=
|
github.com/nrdcg/namesilo v0.2.1 h1:kLjCjsufdW/IlC+iSfAqj0iQGgKjlbUUeDJio5Y6eMg=
|
||||||
github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw=
|
github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw=
|
||||||
|
github.com/nrdcg/porkbun v0.1.1 h1:gxVzQYfFUGXhnBax/aVugoE3OIBAdHgrJgyMPyY5Sjo=
|
||||||
|
github.com/nrdcg/porkbun v0.1.1/go.mod h1:JWl/WKnguWos4mjfp4YizvvToigk9qpQwrodOk+CPoA=
|
||||||
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
|
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
|
||||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||||
github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
|
github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
|
||||||
|
@ -908,6 +912,8 @@ github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCL
|
||||||
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
|
||||||
github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis=
|
github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis=
|
||||||
github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4=
|
github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4=
|
||||||
|
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20210127161313-bd30bebeac4f h1:WSnaD0/cvbKJgSTYbjAPf4RJXVvNNDAwVm+W8wEmnGE=
|
||||||
|
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20210127161313-bd30bebeac4f/go.mod h1:CJJ5VAbozOl0yEw7nHB9+7BXTJbIn6h7W+f6Gau5IP8=
|
||||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=
|
||||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||||
github.com/segmentio/fasthash v1.0.3 h1:EI9+KE1EwvMLBWwjpRDc+fEM+prwxDYbslddQGtrmhM=
|
github.com/segmentio/fasthash v1.0.3 h1:EI9+KE1EwvMLBWwjpRDc+fEM+prwxDYbslddQGtrmhM=
|
||||||
|
@ -945,11 +951,16 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf
|
||||||
github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
|
github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
|
||||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||||
github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
|
github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
|
||||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
|
|
||||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||||
|
github.com/smartystreets/assertions v1.0.1 h1:voD4ITNjPL5jjBfgR/r8fPIIBrliWrWHeiJApdr3r4w=
|
||||||
|
github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
|
||||||
|
github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9 h1:hp2CYQUINdZMHdvTdXtPOY2ainKl4IoMcpAXEf2xj3Q=
|
||||||
|
github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
|
||||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||||
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
|
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
|
||||||
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||||
|
github.com/smartystreets/gunit v1.0.4 h1:tpTjnuH7MLlqhoD21vRoMZbMIi5GmBsAJDFyF67GhZA=
|
||||||
|
github.com/smartystreets/gunit v1.0.4/go.mod h1:EH5qMBab2UclzXUcpR8b93eHsIlp9u+pDQIRp5DZNzQ=
|
||||||
github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=
|
github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=
|
||||||
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
|
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
|
||||||
github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
|
github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
|
||||||
|
@ -1007,12 +1018,12 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc
|
||||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||||
github.com/traefik/gziphandler v1.1.2-0.20210212101304-175e0fad6888 h1:GMY0C+M/w8xO+/NP3Kq6sroMd+z2KbbdVr1K8o2NLHk=
|
github.com/traefik/gziphandler v1.1.2-0.20210212101304-175e0fad6888 h1:GMY0C+M/w8xO+/NP3Kq6sroMd+z2KbbdVr1K8o2NLHk=
|
||||||
github.com/traefik/gziphandler v1.1.2-0.20210212101304-175e0fad6888/go.mod h1:sLqwoN03tkluITKL+lPEZbfsJQU2suYoKbrR/HeV9aM=
|
github.com/traefik/gziphandler v1.1.2-0.20210212101304-175e0fad6888/go.mod h1:sLqwoN03tkluITKL+lPEZbfsJQU2suYoKbrR/HeV9aM=
|
||||||
github.com/traefik/paerser v0.1.2 h1:0zvJgdwp2dNUodZHfgf+3IcaeJH2B28NcCGM+iZVtds=
|
github.com/traefik/paerser v0.1.4 h1:/IXjV04Gf6di51H8Jl7jyS3OylsLjIasrwXIIwj1aT8=
|
||||||
github.com/traefik/paerser v0.1.2/go.mod h1:yYnAgdEC2wJH5CgG75qGWC8SsFDEapg09o9RrA6FfrE=
|
github.com/traefik/paerser v0.1.4/go.mod h1:FIdQ4Y92ulQUGSeZgxchtBKEcLw1o551PMNg9PoIq/4=
|
||||||
github.com/traefik/yaegi v0.9.17 h1:sJ4Wk6S7HHHXtJnOuxC/3qjdQKRy3q9ZhNP0ZGL7Ltw=
|
github.com/traefik/yaegi v0.9.17 h1:sJ4Wk6S7HHHXtJnOuxC/3qjdQKRy3q9ZhNP0ZGL7Ltw=
|
||||||
github.com/traefik/yaegi v0.9.17/go.mod h1:FAYnRlZyuVlEkvnkHq3bvJ1lW5be6XuwgLdkYgYG6Lk=
|
github.com/traefik/yaegi v0.9.17/go.mod h1:FAYnRlZyuVlEkvnkHq3bvJ1lW5be6XuwgLdkYgYG6Lk=
|
||||||
github.com/transip/gotransip/v6 v6.6.0 h1:dAHCTZzX98H6QE2kA4R9acAXu5RPPTwMSUFtpKZF3Nk=
|
github.com/transip/gotransip/v6 v6.2.0 h1:0Z+qVsyeiQdWfcAUeJyF0IEKAPvhJwwpwPi2WGtBIiE=
|
||||||
github.com/transip/gotransip/v6 v6.6.0/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g=
|
github.com/transip/gotransip/v6 v6.2.0/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g=
|
||||||
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
|
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
|
||||||
github.com/uber-go/atomic v1.3.2 h1:Azu9lPBWRNKzYXSIwRfgRuDuS0YKsK4NFhiQv98gkxo=
|
github.com/uber-go/atomic v1.3.2 h1:Azu9lPBWRNKzYXSIwRfgRuDuS0YKsK4NFhiQv98gkxo=
|
||||||
github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g=
|
github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g=
|
||||||
|
@ -1029,7 +1040,7 @@ github.com/unrolled/secure v1.0.9/go.mod h1:fO+mEan+FLB0CdEnHf6Q4ZZVNqG+5fuLFnP8
|
||||||
github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
||||||
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
||||||
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||||
github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
||||||
github.com/urfave/negroni v1.0.0 h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc=
|
github.com/urfave/negroni v1.0.0 h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc=
|
||||||
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
|
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
|
||||||
|
@ -1041,12 +1052,14 @@ github.com/vdemeester/shakers v0.1.0/go.mod h1:IZ1HHynUOQt32iQ3rvAeVddXLd19h/6LW
|
||||||
github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
|
github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
|
||||||
github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=
|
github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=
|
||||||
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
|
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
|
||||||
|
github.com/vinyldns/go-vinyldns v0.0.0-20200917153823-148a5f6b8f14 h1:TFXGGMHmml4rs29PdPisC/aaCzOxUu1Vsh9on/IpUfE=
|
||||||
|
github.com/vinyldns/go-vinyldns v0.0.0-20200917153823-148a5f6b8f14/go.mod h1:RWc47jtnVuQv6+lY3c768WtXCas/Xi+U5UFc5xULmYg=
|
||||||
github.com/vulcand/oxy v1.3.0 h1:358BVHmJNLjhOrhbjq2EVJX5NQ3HxrP0d5OyHLRliX0=
|
github.com/vulcand/oxy v1.3.0 h1:358BVHmJNLjhOrhbjq2EVJX5NQ3HxrP0d5OyHLRliX0=
|
||||||
github.com/vulcand/oxy v1.3.0/go.mod h1:hN/gw/jg+GH4A+bqvznsW26Izd4jNGV6h1z3s7drRzs=
|
github.com/vulcand/oxy v1.3.0/go.mod h1:hN/gw/jg+GH4A+bqvznsW26Izd4jNGV6h1z3s7drRzs=
|
||||||
github.com/vulcand/predicate v1.1.0 h1:Gq/uWopa4rx/tnZu2opOSBqHK63Yqlou/SzrbwdJiNg=
|
github.com/vulcand/predicate v1.1.0 h1:Gq/uWopa4rx/tnZu2opOSBqHK63Yqlou/SzrbwdJiNg=
|
||||||
github.com/vulcand/predicate v1.1.0/go.mod h1:mlccC5IRBoc2cIFmCB8ZM62I3VDb6p2GXESMHa3CnZg=
|
github.com/vulcand/predicate v1.1.0/go.mod h1:mlccC5IRBoc2cIFmCB8ZM62I3VDb6p2GXESMHa3CnZg=
|
||||||
github.com/vultr/govultr/v2 v2.4.0 h1:6ySGGAsoOann0lmVNkS8grLvbAT2iYWnO4R1RVYFg0A=
|
github.com/vultr/govultr/v2 v2.0.0 h1:+lAtqfWy3g9VwL7tT2Fpyad8Vv4MxOhT/NU8O5dk+EQ=
|
||||||
github.com/vultr/govultr/v2 v2.4.0/go.mod h1:U+dZLAmyGD62IGykgC9JYU/zQIOkIhf93nw6dJL/47M=
|
github.com/vultr/govultr/v2 v2.0.0/go.mod h1:2PsEeg+gs3p/Fo5Pw8F9mv+DUBEOlrNZ8GmCTGmhOhs=
|
||||||
github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
|
github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
|
||||||
github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
|
github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
|
||||||
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
|
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
|
||||||
|
@ -1167,8 +1180,9 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
|
|
||||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
|
||||||
|
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
@ -1310,8 +1324,9 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb
|
||||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 h1:Hir2P/De0WpUhtrKGGjvSb2YxUgyZ7EFOSLIcSSpiwE=
|
|
||||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE=
|
||||||
|
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
|
|
@ -190,7 +190,7 @@
|
||||||
},
|
},
|
||||||
"rateLimit": {
|
"rateLimit": {
|
||||||
"average": 42,
|
"average": 42,
|
||||||
"period": 42,
|
"period": "42ns",
|
||||||
"burst": 42,
|
"burst": 42,
|
||||||
"sourceCriterion": {
|
"sourceCriterion": {
|
||||||
"ipStrategy": {
|
"ipStrategy": {
|
||||||
|
@ -306,7 +306,7 @@
|
||||||
},
|
},
|
||||||
"retry": {
|
"retry": {
|
||||||
"attempts": 42,
|
"attempts": 42,
|
||||||
"initialInterval": 42
|
"initialInterval": "42ns"
|
||||||
},
|
},
|
||||||
"contentType": {
|
"contentType": {
|
||||||
"autoDetect": true
|
"autoDetect": true
|
||||||
|
@ -352,9 +352,9 @@
|
||||||
],
|
],
|
||||||
"maxIdleConnsPerHost": 42,
|
"maxIdleConnsPerHost": 42,
|
||||||
"forwardingTimeouts": {
|
"forwardingTimeouts": {
|
||||||
"dialTimeout": 42,
|
"dialTimeout": "42ns",
|
||||||
"responseHeaderTimeout": 42,
|
"responseHeaderTimeout": "42ns",
|
||||||
"idleConnTimeout": 42
|
"idleConnTimeout": "42ns"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue