Compare commits
110 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
06f401d472 | ||
|
|
3b9eaed9c9 | ||
|
|
998868450f | ||
|
|
8914057766 | ||
|
|
e1b6668a84 | ||
|
|
e67fbcc5c2 | ||
|
|
ea3e08ec3b | ||
|
|
f3ecfa82bc | ||
|
|
5e2b393ceb | ||
|
|
0880cc672f | ||
|
|
822f349fa1 | ||
|
|
6c4dfaa56e | ||
|
|
ecf08b91a3 | ||
|
|
b4847d74bc | ||
|
|
6e0012cb0a | ||
|
|
862116c050 | ||
|
|
3a7d331967 | ||
|
|
9dfcded534 | ||
|
|
ffd82c92cb | ||
|
|
f7e59510b4 | ||
|
|
835899f4bc | ||
|
|
34d7091f31 | ||
|
|
0ea8cbdfbf | ||
|
|
c18ba96f87 | ||
|
|
cc1cb77abb | ||
|
|
b04759a80b | ||
|
|
b2f9996fa4 | ||
|
|
fe730d3ad9 | ||
|
|
c948417866 | ||
|
|
b61df559d2 | ||
|
|
2a3b696d85 | ||
|
|
5688b1777d | ||
|
|
c61fb89d3f | ||
|
|
c5ed376d5f | ||
|
|
ad566ee9ef | ||
|
|
83b28270a4 | ||
|
|
8441c476f1 | ||
|
|
5f415615eb | ||
|
|
5dfb832921 | ||
|
|
5878238077 | ||
|
|
614ba391fa | ||
|
|
92d06b733c | ||
|
|
98121cb081 | ||
|
|
52fa989d00 | ||
|
|
6aaae0e6f7 | ||
|
|
b0a6c40c33 | ||
|
|
7c30752d21 | ||
|
|
284d665aa0 | ||
|
|
5ab001b55b | ||
|
|
7e3dbc22f7 | ||
|
|
53df34e070 | ||
|
|
e4f0f7be35 | ||
|
|
2580d0f95c | ||
|
|
5df4c270a7 | ||
|
|
660acf3b42 | ||
|
|
fed86bd816 | ||
|
|
ffd01fc88a | ||
|
|
27a820950a | ||
|
|
f9f825163a | ||
|
|
cff924f4fd | ||
|
|
01bc0a0a0a | ||
|
|
c294b87a45 | ||
|
|
0b240ca97a | ||
|
|
ff848c74f9 | ||
|
|
e2282b1379 | ||
|
|
a051f20876 | ||
|
|
e96034f494 | ||
|
|
f685b3f258 | ||
|
|
7ab17d228f | ||
|
|
5f28c56437 | ||
|
|
2023ffe2d3 | ||
|
|
cc7f409d46 | ||
|
|
19ed2346cb | ||
|
|
f9fbcfbb42 | ||
|
|
30b0666219 | ||
|
|
3f1b5216f0 | ||
|
|
4ff8eca572 | ||
|
|
c2db9db1aa | ||
|
|
90702d93ab | ||
|
|
0bf6442c5d | ||
|
|
1986610363 | ||
|
|
09c11532ac | ||
|
|
1997bc7432 | ||
|
|
8ac8473554 | ||
|
|
fcae39bf13 | ||
|
|
fd8a64ca95 | ||
|
|
86422af988 | ||
|
|
50f95dd909 | ||
|
|
3b33ffa245 | ||
|
|
5cc2a8344c | ||
|
|
fc5359b6f6 | ||
|
|
c5d448fba9 | ||
|
|
c60815ed08 | ||
|
|
aac3d70fa1 | ||
|
|
c450306c5a | ||
|
|
c820d18ada | ||
|
|
16c536e83a | ||
|
|
1827652258 | ||
|
|
19a2e2efc5 | ||
|
|
b350ad7f7c | ||
|
|
bcdb70b689 | ||
|
|
860159315d | ||
|
|
a274f52924 | ||
|
|
cf1e582af5 | ||
|
|
9896192efb | ||
|
|
ba0f7364f1 | ||
|
|
40bdea4db8 | ||
|
|
31db97cbe4 | ||
|
|
5d85e6d088 | ||
|
|
c0edcc09bb |
2
.github/workflows/build.yaml
vendored
@@ -51,7 +51,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/check_doc.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/codeql.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: setup go
|
- name: setup go
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v5
|
||||||
|
|||||||
9
.github/workflows/documentation.yml
vendored
@@ -1,6 +1,7 @@
|
|||||||
name: Build and Publish Documentation
|
name: Build and Publish Documentation
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
workflow_dispatch: {}
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
@@ -19,7 +20,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -39,9 +40,9 @@ jobs:
|
|||||||
run: curl -sSfL https://raw.githubusercontent.com/traefik/mixtus/master/godownloader.sh | sh -s -- -b $HOME/bin ${MIXTUS_VERSION}
|
run: curl -sSfL https://raw.githubusercontent.com/traefik/mixtus/master/godownloader.sh | sh -s -- -b $HOME/bin ${MIXTUS_VERSION}
|
||||||
|
|
||||||
- name: Build documentation
|
- name: Build documentation
|
||||||
run: $HOME/bin/structor -o traefik -r traefik --dockerfile-url="https://raw.githubusercontent.com/traefik/traefik/v1.7/docs.Dockerfile" --menu.js-url="https://raw.githubusercontent.com/traefik/structor/master/traefik-menu.js.gotmpl" --rqts-url="https://raw.githubusercontent.com/traefik/structor/master/requirements-override.txt" --force-edit-url --exp-branch=master --debug
|
run: |
|
||||||
env:
|
STRUCTOR_LATEST_TAG=$(curl -s https://api.github.com/repos/traefik/traefik/releases/latest | jq -r '.tag_name')
|
||||||
STRUCTOR_LATEST_TAG: ${{ vars.STRUCTOR_LATEST_TAG }}
|
$HOME/bin/structor -o traefik -r traefik --dockerfile-url="https://raw.githubusercontent.com/traefik/traefik/v1.7/docs.Dockerfile" --menu.js-url="https://raw.githubusercontent.com/traefik/structor/master/traefik-menu.js.gotmpl" --rqts-url="https://raw.githubusercontent.com/traefik/structor/master/requirements-override.txt" --force-edit-url --exp-branch=master --debug
|
||||||
|
|
||||||
- name: Apply seo
|
- name: Apply seo
|
||||||
run: $HOME/bin/seo -path=./site -product=traefik
|
run: $HOME/bin/seo -path=./site -product=traefik
|
||||||
|
|||||||
2
.github/workflows/experimental.yaml
vendored
@@ -23,7 +23,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
8
.github/workflows/release.yaml
vendored
@@ -30,7 +30,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -126,13 +126,11 @@ jobs:
|
|||||||
tar cfz "dist/traefik-${VERSION}.src.tar.gz" \
|
tar cfz "dist/traefik-${VERSION}.src.tar.gz" \
|
||||||
--exclude-vcs \
|
--exclude-vcs \
|
||||||
--exclude .idea \
|
--exclude .idea \
|
||||||
--exclude .travis \
|
|
||||||
--exclude .semaphoreci \
|
|
||||||
--exclude .github \
|
--exclude .github \
|
||||||
--exclude dist .
|
--exclude dist .
|
||||||
|
|
||||||
chown -R "$(id -u)":"$(id -g)" dist/
|
chown -R "$(id -u)":"$(id -g)" dist/
|
||||||
gh release create ${VERSION} ./dist/**/traefik*.{zip,tar.gz} ./dist/traefik*.{tar.gz,txt} --repo traefik/traefik --title ${VERSION} --notes ${VERSION}
|
gh release create ${VERSION} ./dist/**/traefik*.{zip,tar.gz} ./dist/traefik*.{tar.gz,txt} --repo traefik/traefik --title ${VERSION} --notes ${VERSION} --latest=true
|
||||||
|
|
||||||
./script/deploy.sh
|
./script/deploy.sh
|
||||||
|
|
||||||
|
|||||||
2
.github/workflows/template-webui.yaml
vendored
@@ -8,7 +8,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
5
.github/workflows/test-conformance.yaml
vendored
@@ -30,11 +30,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
go-version: ${{ env.GO_VERSION }}
|
go-version: ${{ env.GO_VERSION }}
|
||||||
|
|
||||||
- name: Avoid generating webui
|
|
||||||
run: |
|
|
||||||
mkdir webui/static
|
|
||||||
touch webui/static/index.html
|
|
||||||
|
|
||||||
- name: K8s Gateway API conformance test and report
|
- name: K8s Gateway API conformance test and report
|
||||||
run: |
|
run: |
|
||||||
make test-gateway-api-conformance
|
make test-gateway-api-conformance
|
||||||
|
|||||||
14
.github/workflows/test-integration.yaml
vendored
@@ -20,7 +20,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -30,11 +30,6 @@ jobs:
|
|||||||
go-version: ${{ env.GO_VERSION }}
|
go-version: ${{ env.GO_VERSION }}
|
||||||
check-latest: true
|
check-latest: true
|
||||||
|
|
||||||
- name: Avoid generating webui
|
|
||||||
run: |
|
|
||||||
mkdir webui/static
|
|
||||||
touch webui/static/index.html
|
|
||||||
|
|
||||||
- name: Build binary
|
- name: Build binary
|
||||||
run: make binary-linux-amd64
|
run: make binary-linux-amd64
|
||||||
|
|
||||||
@@ -64,7 +59,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -74,11 +69,6 @@ jobs:
|
|||||||
go-version: ${{ env.GO_VERSION }}
|
go-version: ${{ env.GO_VERSION }}
|
||||||
check-latest: true
|
check-latest: true
|
||||||
|
|
||||||
- name: Avoid generating webui
|
|
||||||
run: |
|
|
||||||
mkdir webui/static
|
|
||||||
touch webui/static/index.html
|
|
||||||
|
|
||||||
- name: Download traefik binary
|
- name: Download traefik binary
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
|||||||
11
.github/workflows/test-unit.yaml
vendored
@@ -20,7 +20,7 @@ jobs:
|
|||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -56,11 +56,6 @@ jobs:
|
|||||||
go-version: ${{ env.GO_VERSION }}
|
go-version: ${{ env.GO_VERSION }}
|
||||||
check-latest: true
|
check-latest: true
|
||||||
|
|
||||||
- name: Avoid generating webui
|
|
||||||
run: |
|
|
||||||
mkdir webui/static
|
|
||||||
touch webui/static/index.html
|
|
||||||
|
|
||||||
- name: Tests
|
- name: Tests
|
||||||
run: |
|
run: |
|
||||||
go test -v -parallel 8 ${{ matrix.package.group }}
|
go test -v -parallel 8 ${{ matrix.package.group }}
|
||||||
@@ -70,7 +65,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
16
.github/workflows/validate.yaml
vendored
@@ -17,7 +17,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -27,11 +27,6 @@ jobs:
|
|||||||
go-version: ${{ env.GO_VERSION }}
|
go-version: ${{ env.GO_VERSION }}
|
||||||
check-latest: true
|
check-latest: true
|
||||||
|
|
||||||
- name: Avoid generating webui
|
|
||||||
run: |
|
|
||||||
mkdir webui/static
|
|
||||||
touch webui/static/index.html
|
|
||||||
|
|
||||||
- name: golangci-lint
|
- name: golangci-lint
|
||||||
uses: golangci/golangci-lint-action@v7
|
uses: golangci/golangci-lint-action@v7
|
||||||
with:
|
with:
|
||||||
@@ -42,7 +37,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -55,11 +50,6 @@ jobs:
|
|||||||
- name: Install misspell ${{ env.MISSPELL_VERSION }}
|
- name: Install misspell ${{ env.MISSPELL_VERSION }}
|
||||||
run: curl -sfL https://raw.githubusercontent.com/golangci/misspell/HEAD/install-misspell.sh | sh -s -- -b $(go env GOPATH)/bin ${MISSPELL_VERSION}
|
run: curl -sfL https://raw.githubusercontent.com/golangci/misspell/HEAD/install-misspell.sh | sh -s -- -b $(go env GOPATH)/bin ${MISSPELL_VERSION}
|
||||||
|
|
||||||
- name: Avoid generating webui
|
|
||||||
run: |
|
|
||||||
mkdir webui/static
|
|
||||||
touch webui/static/index.html
|
|
||||||
|
|
||||||
- name: Validate
|
- name: Validate
|
||||||
run: make validate-files
|
run: make validate-files
|
||||||
|
|
||||||
@@ -68,7 +58,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- name: Check out code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ linters:
|
|||||||
- path: pkg/provider/kubernetes/(crd|gateway)/client.go
|
- path: pkg/provider/kubernetes/(crd|gateway)/client.go
|
||||||
linters:
|
linters:
|
||||||
- interfacebloat
|
- interfacebloat
|
||||||
- path: pkg/metrics/metrics.go
|
- path: pkg/observability/metrics/metrics.go
|
||||||
linters:
|
linters:
|
||||||
- interfacebloat
|
- interfacebloat
|
||||||
- path: integration/healthcheck_test.go
|
- path: integration/healthcheck_test.go
|
||||||
@@ -308,8 +308,6 @@ linters:
|
|||||||
text: 'SA1019: cfg.(SSLRedirect|SSLTemporaryRedirect|SSLHost|SSLForceHost|FeaturePolicy) is deprecated'
|
text: 'SA1019: cfg.(SSLRedirect|SSLTemporaryRedirect|SSLHost|SSLForceHost|FeaturePolicy) is deprecated'
|
||||||
- path: (.+)\.go$
|
- path: (.+)\.go$
|
||||||
text: 'SA1019: c.Providers.(ConsulCatalog|Consul|Nomad).Namespace is deprecated'
|
text: 'SA1019: c.Providers.(ConsulCatalog|Consul|Nomad).Namespace is deprecated'
|
||||||
- path: (.+)\.go$
|
|
||||||
text: 'SA1019: dockertypes.ContainerNode is deprecated'
|
|
||||||
- path: pkg/provider/kubernetes/crd/kubernetes.go
|
- path: pkg/provider/kubernetes/crd/kubernetes.go
|
||||||
text: "Function 'loadConfigurationFromCRD' has too many statements"
|
text: "Function 'loadConfigurationFromCRD' has too many statements"
|
||||||
linters:
|
linters:
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
version: v1.0
|
|
||||||
name: Traefik Release - deprecated
|
|
||||||
agent:
|
|
||||||
machine:
|
|
||||||
type: f1-standard-2
|
|
||||||
os_image: ubuntu2204
|
|
||||||
blocks:
|
|
||||||
- name: 'Do nothing'
|
|
||||||
task:
|
|
||||||
jobs:
|
|
||||||
- name: 'Do nothing'
|
|
||||||
commands:
|
|
||||||
- echo "Do nothing"
|
|
||||||
138
CHANGELOG.md
@@ -1,3 +1,141 @@
|
|||||||
|
## [v3.5.4](https://github.com/traefik/traefik/tree/v3.5.4) (2025-10-28)
|
||||||
|
[All Commits](https://github.com/traefik/traefik/compare/v3.5.3...v3.5.4)
|
||||||
|
|
||||||
|
**Bug fixes:**
|
||||||
|
- **[acme]** Bump github.com/go-acme/lego/v4 to v4.27.0 ([#12166](https://github.com/traefik/traefik/pull/12166) by [ldez](https://github.com/ldez))
|
||||||
|
- **[acme]** Bump github.com/go-acme/lego/v4 to v4.26.0 ([#12063](https://github.com/traefik/traefik/pull/12063) by [ldez](https://github.com/ldez))
|
||||||
|
- **[http3]** Bump github.com/quic-go/quic-go to v0.55.0 ([#12121](https://github.com/traefik/traefik/pull/12121) by [GreyXor](https://github.com/GreyXor))
|
||||||
|
- **[kv]** Bump github.com/kvtools/etcdv3 to v1.0.3 ([#12163](https://github.com/traefik/traefik/pull/12163) by [kevinpollet](https://github.com/kevinpollet))
|
||||||
|
- **[logs,metrics,tracing,accesslogs,otel]** Fix otel not working without USER ([#12103](https://github.com/traefik/traefik/pull/12103) by [mmatur](https://github.com/mmatur))
|
||||||
|
- **[logs,otel]** Enable stdout logging when OTLP is enabled ([#12124](https://github.com/traefik/traefik/pull/12124) by [lbenguigui](https://github.com/lbenguigui))
|
||||||
|
- **[metrics,otel]** Rename traefik_tls_certs_not_after_milliseconds to traefik_tls_certs_not_after_seconds ([#12141](https://github.com/traefik/traefik/pull/12141) by [shreealt](https://github.com/shreealt))
|
||||||
|
- **[otel]** Update OpenTelemetry to v1.38.0 and semantic conventions to v1.37.0 ([#12099](https://github.com/traefik/traefik/pull/12099) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- **[otel]** Do not fail when pod is not found in K8sAttributesDetector ([#12096](https://github.com/traefik/traefik/pull/12096) by [xe-leon](https://github.com/xe-leon))
|
||||||
|
- **[tls]** Make the staple updates continuous ([#12142](https://github.com/traefik/traefik/pull/12142) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- **[webui]** Fix version display regression ([#12111](https://github.com/traefik/traefik/pull/12111) by [mdeliatf](https://github.com/mdeliatf))
|
||||||
|
|
||||||
|
**Documentation:**
|
||||||
|
- **[accesslogs]** Fix link for accesslog.fields.names in documentation ([#12094](https://github.com/traefik/traefik/pull/12094) by [rmbruntz](https://github.com/rmbruntz))
|
||||||
|
- **[acme]** Fix Hetzner env var name inside documentation ([#12187](https://github.com/traefik/traefik/pull/12187) by [ldez](https://github.com/ldez))
|
||||||
|
- **[acme]** Replace internal dead links ([#12152](https://github.com/traefik/traefik/pull/12152) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- **[acme]** Clean and avoid collisions of anchors in option tables ([#12149](https://github.com/traefik/traefik/pull/12149) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- **[docker/swarm]** Fix swarm code example ([#12115](https://github.com/traefik/traefik/pull/12115) by [Dr4K4n](https://github.com/Dr4K4n))
|
||||||
|
- **[healthcheck]** Clarify health check requirement for server status metric ([#12201](https://github.com/traefik/traefik/pull/12201) by [asafm](https://github.com/asafm))
|
||||||
|
- **[k8s/crd]** Fix typo in ingressroute.md from pirority to priority ([#12112](https://github.com/traefik/traefik/pull/12112) by [miromichalicka](https://github.com/miromichalicka))
|
||||||
|
- **[k8s]** Fix incorrect option and lint page ([#12108](https://github.com/traefik/traefik/pull/12108) by [sheddy-traefik](https://github.com/sheddy-traefik))
|
||||||
|
- **[k8s]** Add API basePath documentation and fix broken links ([#12177](https://github.com/traefik/traefik/pull/12177) by [mloiseleur](https://github.com/mloiseleur))
|
||||||
|
- **[k8s]** Merge TLSOption/TLSStore CRD documentation page ([#12164](https://github.com/traefik/traefik/pull/12164) by [nmengin](https://github.com/nmengin))
|
||||||
|
- **[logs]** Clarify log.filePath behavior in documentation ([#12153](https://github.com/traefik/traefik/pull/12153) by [Alanxtl](https://github.com/Alanxtl))
|
||||||
|
- **[metrics]** Fix incorrect addInternals configuration option ([#12118](https://github.com/traefik/traefik/pull/12118) by [shreealt](https://github.com/shreealt))
|
||||||
|
- **[middleware]** Fix anchors in basic auth configuration options ([#12168](https://github.com/traefik/traefik/pull/12168) by [homersimpsons](https://github.com/homersimpsons))
|
||||||
|
- **[middleware]** Fix PreserveRequestMethod casing ([#12122](https://github.com/traefik/traefik/pull/12122) by [LeTamanoir](https://github.com/LeTamanoir))
|
||||||
|
- **[middleware]** Add missing reference docs for statusRewrites in errors middleware ([#12198](https://github.com/traefik/traefik/pull/12198) by [sevensolutions](https://github.com/sevensolutions))
|
||||||
|
- **[middleware]** Document rejectStatusCode ([#12062](https://github.com/traefik/traefik/pull/12062) by [czocher](https://github.com/czocher))
|
||||||
|
- **[otel]** Align documentation on default otlp endpoint ([#12151](https://github.com/traefik/traefik/pull/12151) by [mloiseleur](https://github.com/mloiseleur))
|
||||||
|
- **[otel]** Fix metric name to metrics.otlp.grpc.insecure ([#12200](https://github.com/traefik/traefik/pull/12200) by [germainlefebvre4](https://github.com/germainlefebvre4))
|
||||||
|
- **[server,k8s/crd,k8s]** Add dedicated pages for routers and fix doc links in CRDs ([#12119](https://github.com/traefik/traefik/pull/12119) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- **[tls]** Fix typo in TLS certificate generation description ([#12185](https://github.com/traefik/traefik/pull/12185) by [iraj-jelo](https://github.com/iraj-jelo))
|
||||||
|
- Fix wrong references to router's pages ([#12131](https://github.com/traefik/traefik/pull/12131) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- Fix markdown rendering for table anchors ([#12129](https://github.com/traefik/traefik/pull/12129) by [MaBauMeBad](https://github.com/MaBauMeBad))
|
||||||
|
- Fix provider option descriptions ([#12135](https://github.com/traefik/traefik/pull/12135) by [kevinpollet](https://github.com/kevinpollet))
|
||||||
|
- Format HTTP headers as code ([#12105](https://github.com/traefik/traefik/pull/12105) by [tyilo](https://github.com/tyilo))
|
||||||
|
- Fix heading levels and add links ([#12084](https://github.com/traefik/traefik/pull/12084) by [Granjow](https://github.com/Granjow))
|
||||||
|
|
||||||
|
**Misc:**
|
||||||
|
- Merge branch v2.11 into v3.5 ([#12206](https://github.com/traefik/traefik/pull/12206) by [kevinpollet](https://github.com/kevinpollet))
|
||||||
|
- Merge branch v2.11 into v3.5 ([#12158](https://github.com/traefik/traefik/pull/12158) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
|
||||||
|
## [v2.11.30](https://github.com/traefik/traefik/tree/v2.11.30) (2025-10-28)
|
||||||
|
[All Commits](https://github.com/traefik/traefik/compare/v2.11.29...v2.11.30)
|
||||||
|
|
||||||
|
**Bug fixes:**
|
||||||
|
- **[http3]** Bump github.com/quic-go/quic-go to v0.55.0 ([#12156](https://github.com/traefik/traefik/pull/12156) by [kevinpollet](https://github.com/kevinpollet))
|
||||||
|
- **[kv]** Fix KV key name used to check if connection is alive ([#12162](https://github.com/traefik/traefik/pull/12162) by [kevinpollet](https://github.com/kevinpollet))
|
||||||
|
- **[server]** Bump golang.org/x/net to v0.46.0 ([#12143](https://github.com/traefik/traefik/pull/12143) by [kevinpollet](https://github.com/kevinpollet))
|
||||||
|
- **[tracing]** Bump gopkg.in/DataDog/dd-trace-go.v1 to v1.74.6 ([#12083](https://github.com/traefik/traefik/pull/12083) by [hannahkm](https://github.com/hannahkm))
|
||||||
|
|
||||||
|
## [v3.5.3](https://github.com/traefik/traefik/tree/v3.5.3) (2025-09-26)
|
||||||
|
[All Commits](https://github.com/traefik/traefik/compare/v3.5.2...v3.5.3)
|
||||||
|
|
||||||
|
**Bug fixes:**
|
||||||
|
- **[k8s/crd]** ServersTransport: set minimum MaxIdleConnsPerHost=-1 ([#12077](https://github.com/traefik/traefik/pull/12077) by [xe-leon](https://github.com/xe-leon))
|
||||||
|
- **[plugins]** Refactor plugins system ([#12035](https://github.com/traefik/traefik/pull/12035) by [jspdown](https://github.com/jspdown))
|
||||||
|
- **[server]** Use client conn to build the proxy protocol header ([#12069](https://github.com/traefik/traefik/pull/12069) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- **[webui]** Update hub-button-app to use a local script ([#12060](https://github.com/traefik/traefik/pull/12060) by [mdeliatf](https://github.com/mdeliatf))
|
||||||
|
|
||||||
|
**Documentation:**
|
||||||
|
- **[acme,middleware]** Fix broken links in documentation ([#12057](https://github.com/traefik/traefik/pull/12057) by [mloiseleur](https://github.com/mloiseleur))
|
||||||
|
- **[k8s]** Create Traefik Service CRD sub-resource documentation page ([#12080](https://github.com/traefik/traefik/pull/12080) by [nmengin](https://github.com/nmengin))
|
||||||
|
- **[k8s]** Fix conflict in IngressRouteTCP documentation ([#12064](https://github.com/traefik/traefik/pull/12064) by [MatBon01](https://github.com/MatBon01))
|
||||||
|
- Fix typo in rules and priority documentation ([#12089](https://github.com/traefik/traefik/pull/12089) by [Darkangeel-hd](https://github.com/Darkangeel-hd))
|
||||||
|
- Add govern section ([#12067](https://github.com/traefik/traefik/pull/12067) by [sheddy-traefik](https://github.com/sheddy-traefik))
|
||||||
|
- Fix entrypoint config examples ([#12056](https://github.com/traefik/traefik/pull/12056) by [markormesher](https://github.com/markormesher))
|
||||||
|
- Reorganize the menu entries ([#12044](https://github.com/traefik/traefik/pull/12044) by [nmengin](https://github.com/nmengin))
|
||||||
|
- Add New Secure Section to the Documentation ([#11978](https://github.com/traefik/traefik/pull/11978) by [sheddy-traefik](https://github.com/sheddy-traefik))
|
||||||
|
|
||||||
|
## [v3.5.2](https://github.com/traefik/traefik/tree/v3.5.2) (2025-09-09)
|
||||||
|
[All Commits](https://github.com/traefik/traefik/compare/v3.5.1...v3.5.2)
|
||||||
|
|
||||||
|
**Bug fixes:**
|
||||||
|
- **[middleware,accesslogs]** Add GenericCLF log format for access logs ([#12033](https://github.com/traefik/traefik/pull/12033) by [sdelicata](https://github.com/sdelicata))
|
||||||
|
- **[middleware]** Fix customerrors query url replacement ([#11876](https://github.com/traefik/traefik/pull/11876) by [DorianBlues](https://github.com/DorianBlues))
|
||||||
|
- **[tls,service]** Send proxy protocol header before TLS handshake ([#11956](https://github.com/traefik/traefik/pull/11956) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- **[webui]** Restore empty webui/static to use traefik as library ([#12025](https://github.com/traefik/traefik/pull/12025) by [youkoulayley](https://github.com/youkoulayley))
|
||||||
|
|
||||||
|
**Documentation:**
|
||||||
|
- **[accesslogs]** Fix path for access-logs header config ([#12030](https://github.com/traefik/traefik/pull/12030) by [cgatt](https://github.com/cgatt))
|
||||||
|
- **[acme]** Fixes typo for OCSP in CLI example ([#12039](https://github.com/traefik/traefik/pull/12039) by [mloiseleur](https://github.com/mloiseleur))
|
||||||
|
- **[docker/swarm]** Fixes typo for Swarm mode in CLI example ([#12038](https://github.com/traefik/traefik/pull/12038) by [BilalBudhani](https://github.com/BilalBudhani))
|
||||||
|
- **[kv]** Fix broken links in KV store documentation ([#12040](https://github.com/traefik/traefik/pull/12040) by [sheddy-traefik](https://github.com/sheddy-traefik))
|
||||||
|
- **[middleware]** Add redis options to ratelimit middleware & Include distributed rate limit middleware ([#12041](https://github.com/traefik/traefik/pull/12041) by [sheddy-traefik](https://github.com/sheddy-traefik))
|
||||||
|
- **[server]** Fix link to HTTP3 section in documentation ([#12028](https://github.com/traefik/traefik/pull/12028) by [vincentbernat](https://github.com/vincentbernat))
|
||||||
|
- Fix migration path in documentation ([#12032](https://github.com/traefik/traefik/pull/12032) by [nmengin](https://github.com/nmengin))
|
||||||
|
|
||||||
|
## [v3.5.1](https://github.com/traefik/traefik/tree/v3.5.1) (2025-08-27)
|
||||||
|
[All Commits](https://github.com/traefik/traefik/compare/v3.5.0...v3.5.1)
|
||||||
|
|
||||||
|
**Bug fixes:**
|
||||||
|
- **[accesslogs,otel]** Provide Log Body in OTEL access Log ([#11867](https://github.com/traefik/traefik/pull/11867) by [tomMoulard](https://github.com/tomMoulard))
|
||||||
|
- **[acme]** Bump github.com/go-acme/lego/v4 to v4.25.1 ([#11882](https://github.com/traefik/traefik/pull/11882) by [ldez](https://github.com/ldez))
|
||||||
|
- **[k8s/gatewayapi]** Make app protocol case insensitive ([#11989](https://github.com/traefik/traefik/pull/11989) by [shreealt](https://github.com/shreealt))
|
||||||
|
- **[otel]** Fix misspelling in docs ([#11952](https://github.com/traefik/traefik/pull/11952) by [mmanciop](https://github.com/mmanciop))
|
||||||
|
- **[server]** Bump to github.com/pires/go-proxyproto v0.8.1 ([#11991](https://github.com/traefik/traefik/pull/11991) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- **[server]** Silent expected errors on receiving sigterm signal ([#11838](https://github.com/traefik/traefik/pull/11838) by [Kwuray](https://github.com/Kwuray))
|
||||||
|
- **[tracing]** Fix capturedRequestHeaders and capturedResponseHeaders headers options not being canonicalized in tracing ([#12005](https://github.com/traefik/traefik/pull/12005) by [mcuelenaere](https://github.com/mcuelenaere))
|
||||||
|
- **[tracing]** Follow OTel semantic conventions for root span naming ([#11673](https://github.com/traefik/traefik/pull/11673) by [Alex-Waring](https://github.com/Alex-Waring))
|
||||||
|
- **[webui]** Update Traefik Proxy dashboard UI development deps ([#11958](https://github.com/traefik/traefik/pull/11958) by [mdeliatf](https://github.com/mdeliatf))
|
||||||
|
- Refactor to use reflect.TypeFor ([#12010](https://github.com/traefik/traefik/pull/12010) by [cuiweixie](https://github.com/cuiweixie))
|
||||||
|
|
||||||
|
**Documentation:**
|
||||||
|
- **[docker]** Fix missing middleware application for whoami service in docker guide ([#12012](https://github.com/traefik/traefik/pull/12012) by [Copilot](https://github.com/apps/copilot-swe-agent))
|
||||||
|
- **[k8s/gatewayapi]** Fix documentation to match new gateway-api selector syntax ([#12006](https://github.com/traefik/traefik/pull/12006) by [Firespray-31](https://github.com/Firespray-31))
|
||||||
|
- **[middleware,hub]** Add Traefik Hub Middlewares To Reference Section ([#11937](https://github.com/traefik/traefik/pull/11937) by [sheddy-traefik](https://github.com/sheddy-traefik))
|
||||||
|
- **[plugins]** Add extend documentation ([#11904](https://github.com/traefik/traefik/pull/11904) by [sheddy-traefik](https://github.com/sheddy-traefik))
|
||||||
|
- Update Broken Links in the Migration Docs ([#12016](https://github.com/traefik/traefik/pull/12016) by [sheddy-traefik](https://github.com/sheddy-traefik))
|
||||||
|
- Fix Documentation menu ([#12013](https://github.com/traefik/traefik/pull/12013) by [nmengin](https://github.com/nmengin))
|
||||||
|
- Fix invalid links in documentation ([#11995](https://github.com/traefik/traefik/pull/11995) by [mloiseleur](https://github.com/mloiseleur))
|
||||||
|
- Fix typo in index ([#11994](https://github.com/traefik/traefik/pull/11994) by [ignyx](https://github.com/ignyx))
|
||||||
|
- Restore missing migration section ([#11973](https://github.com/traefik/traefik/pull/11973) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- Clean Documentation ([#11945](https://github.com/traefik/traefik/pull/11945) by [nmengin](https://github.com/nmengin))
|
||||||
|
- Add back the link to Peka's page ([#11942](https://github.com/traefik/traefik/pull/11942) by [kevinpollet](https://github.com/kevinpollet))
|
||||||
|
|
||||||
|
**Misc:**
|
||||||
|
- Merge branch v2.11 into v3.5 ([#12019](https://github.com/traefik/traefik/pull/12019) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- Merge branch v2.11 into v3.5 ([#12017](https://github.com/traefik/traefik/pull/12017) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
- Merge branch v2.11 into v3.5 ([#11966](https://github.com/traefik/traefik/pull/11966) by [kevinpollet](https://github.com/kevinpollet))
|
||||||
|
- Merge branch v3.4 into v3.5 ([#11953](https://github.com/traefik/traefik/pull/11953) by [rtribotte](https://github.com/rtribotte))
|
||||||
|
|
||||||
|
## [v2.11.29](https://github.com/traefik/traefik/tree/v2.11.29) (2025-08-26)
|
||||||
|
[All Commits](https://github.com/traefik/traefik/compare/v2.11.28...v2.11.29)
|
||||||
|
|
||||||
|
**Bug fixes:**
|
||||||
|
- **[acme]** Bump github.com/go-acme/lego/v4 to v4.25.2 ([#11983](https://github.com/traefik/traefik/pull/11983) by [ldez](https://github.com/ldez))
|
||||||
|
- **[docker]** Bump github.com/docker/docker to v28.3.3 ([#12007](https://github.com/traefik/traefik/pull/12007) by [kevinpollet](https://github.com/kevinpollet))
|
||||||
|
|
||||||
|
**Documentation:**
|
||||||
|
- Fix invalid links in documentation ([#11960](https://github.com/traefik/traefik/pull/11960) by [mloiseleur](https://github.com/mloiseleur))
|
||||||
|
- Update releases docs for v3.5 ([#11949](https://github.com/traefik/traefik/pull/11949) by [jnoordsij](https://github.com/jnoordsij))
|
||||||
|
|
||||||
## [v3.5.0](https://github.com/traefik/traefik/tree/v3.5.0) (2025-07-23)
|
## [v3.5.0](https://github.com/traefik/traefik/tree/v3.5.0) (2025-07-23)
|
||||||
[All Commits](https://github.com/traefik/traefik/compare/v3.5.0-rc1...v3.5.0)
|
[All Commits](https://github.com/traefik/traefik/compare/v3.5.0-rc1...v3.5.0)
|
||||||
|
|
||||||
|
|||||||
10
Makefile
@@ -35,12 +35,15 @@ build-webui-image:
|
|||||||
.PHONY: clean-webui
|
.PHONY: clean-webui
|
||||||
#? clean-webui: Clean WebUI static generated assets
|
#? clean-webui: Clean WebUI static generated assets
|
||||||
clean-webui:
|
clean-webui:
|
||||||
rm -rf webui/static
|
rm -r webui/static
|
||||||
|
mkdir -p webui/static
|
||||||
|
printf 'For more information see `webui/readme.md`' > webui/static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md
|
||||||
|
|
||||||
webui/static/index.html:
|
webui/static/index.html:
|
||||||
$(MAKE) build-webui-image
|
$(MAKE) build-webui-image
|
||||||
docker run --rm -v "$(PWD)/webui/static":'/src/webui/static' traefik-webui yarn build:prod
|
docker run --rm -v "$(PWD)/webui/static":'/src/webui/static' traefik-webui yarn build:prod
|
||||||
docker run --rm -v "$(PWD)/webui/static":'/src/webui/static' traefik-webui chown -R $(shell id -u):$(shell id -g) ./static
|
docker run --rm -v "$(PWD)/webui/static":'/src/webui/static' traefik-webui chown -R $(shell id -u):$(shell id -g) ./static
|
||||||
|
printf 'For more information see `webui/readme.md`' > webui/static/DONT-EDIT-FILES-IN-THIS-DIRECTORY.md
|
||||||
|
|
||||||
.PHONY: generate-webui
|
.PHONY: generate-webui
|
||||||
#? generate-webui: Generate WebUI
|
#? generate-webui: Generate WebUI
|
||||||
@@ -181,11 +184,6 @@ generate-crd:
|
|||||||
generate-genconf:
|
generate-genconf:
|
||||||
go run ./cmd/internal/gen/
|
go run ./cmd/internal/gen/
|
||||||
|
|
||||||
.PHONY: release-packages
|
|
||||||
#? release-packages: Create packages for the release
|
|
||||||
release-packages: generate-webui
|
|
||||||
$(CURDIR)/script/release-packages.sh
|
|
||||||
|
|
||||||
.PHONY: fmt
|
.PHONY: fmt
|
||||||
#? fmt: Format the Code
|
#? fmt: Format the Code
|
||||||
fmt:
|
fmt:
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
</picture>
|
</picture>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
[](https://traefik-oss.semaphoreci.com/projects/traefik)
|
|
||||||
[](https://doc.traefik.io/traefik)
|
[](https://doc.traefik.io/traefik)
|
||||||
[](https://goreportcard.com/report/traefik/traefik)
|
[](https://goreportcard.com/report/traefik/traefik)
|
||||||
[](https://github.com/traefik/traefik/blob/master/LICENSE.md)
|
[](https://github.com/traefik/traefik/blob/master/LICENSE.md)
|
||||||
@@ -152,7 +151,7 @@ We use [Semantic Versioning](https://semver.org/).
|
|||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
Kudos to Peka for his awesome work on the gopher's logo!.
|
Kudos to [Peka](https://www.instagram.com/pierroks/) for his awesome work on the gopher's logo!.
|
||||||
|
|
||||||
The gopher's logo of Traefik is licensed under the Creative Commons 3.0 Attributions license.
|
The gopher's logo of Traefik is licensed under the Creative Commons 3.0 Attributions license.
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import (
|
|||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/traefik/traefik/v3/pkg/config/static"
|
"github.com/traefik/traefik/v3/pkg/config/static"
|
||||||
"github.com/traefik/traefik/v3/pkg/logs"
|
"github.com/traefik/traefik/v3/pkg/observability/logs"
|
||||||
"gopkg.in/natefinch/lumberjack.v2"
|
"gopkg.in/natefinch/lumberjack.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -68,10 +68,6 @@ func setupLogger(ctx context.Context, staticConfiguration *static.Configuration)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getLogWriter(staticConfiguration *static.Configuration) io.Writer {
|
func getLogWriter(staticConfiguration *static.Configuration) io.Writer {
|
||||||
if staticConfiguration.Log != nil && staticConfiguration.Log.OTLP != nil {
|
|
||||||
return io.Discard
|
|
||||||
}
|
|
||||||
|
|
||||||
var w io.Writer = os.Stdout
|
var w io.Writer = os.Stdout
|
||||||
if staticConfiguration.Log != nil && len(staticConfiguration.Log.FilePath) > 0 {
|
if staticConfiguration.Log != nil && len(staticConfiguration.Log.FilePath) > 0 {
|
||||||
_, _ = os.OpenFile(staticConfiguration.Log.FilePath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0o666)
|
_, _ = os.OpenFile(staticConfiguration.Log.FilePath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0o666)
|
||||||
|
|||||||
@@ -2,43 +2,62 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"path/filepath"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/hashicorp/go-retryablehttp"
|
||||||
|
"github.com/rs/zerolog/log"
|
||||||
"github.com/traefik/traefik/v3/pkg/config/static"
|
"github.com/traefik/traefik/v3/pkg/config/static"
|
||||||
|
"github.com/traefik/traefik/v3/pkg/observability/logs"
|
||||||
"github.com/traefik/traefik/v3/pkg/plugins"
|
"github.com/traefik/traefik/v3/pkg/plugins"
|
||||||
)
|
)
|
||||||
|
|
||||||
const outputDir = "./plugins-storage/"
|
const outputDir = "./plugins-storage/"
|
||||||
|
|
||||||
func createPluginBuilder(staticConfiguration *static.Configuration) (*plugins.Builder, error) {
|
func createPluginBuilder(staticConfiguration *static.Configuration) (*plugins.Builder, error) {
|
||||||
client, plgs, localPlgs, err := initPlugins(staticConfiguration)
|
manager, plgs, localPlgs, err := initPlugins(staticConfiguration)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return plugins.NewBuilder(client, plgs, localPlgs)
|
return plugins.NewBuilder(manager, plgs, localPlgs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func initPlugins(staticCfg *static.Configuration) (*plugins.Client, map[string]plugins.Descriptor, map[string]plugins.LocalDescriptor, error) {
|
func initPlugins(staticCfg *static.Configuration) (*plugins.Manager, map[string]plugins.Descriptor, map[string]plugins.LocalDescriptor, error) {
|
||||||
err := checkUniquePluginNames(staticCfg.Experimental)
|
err := checkUniquePluginNames(staticCfg.Experimental)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var client *plugins.Client
|
var manager *plugins.Manager
|
||||||
plgs := map[string]plugins.Descriptor{}
|
plgs := map[string]plugins.Descriptor{}
|
||||||
|
|
||||||
if hasPlugins(staticCfg) {
|
if hasPlugins(staticCfg) {
|
||||||
opts := plugins.ClientOptions{
|
httpClient := retryablehttp.NewClient()
|
||||||
|
httpClient.Logger = logs.NewRetryableHTTPLogger(log.Logger)
|
||||||
|
httpClient.HTTPClient = &http.Client{Timeout: 10 * time.Second}
|
||||||
|
httpClient.RetryMax = 3
|
||||||
|
|
||||||
|
// Create separate downloader for HTTP operations
|
||||||
|
archivesPath := filepath.Join(outputDir, "archives")
|
||||||
|
downloader, err := plugins.NewRegistryDownloader(plugins.RegistryDownloaderOptions{
|
||||||
|
HTTPClient: httpClient.HTTPClient,
|
||||||
|
ArchivesPath: archivesPath,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, fmt.Errorf("unable to create plugin downloader: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := plugins.ManagerOptions{
|
||||||
Output: outputDir,
|
Output: outputDir,
|
||||||
}
|
}
|
||||||
|
manager, err = plugins.NewManager(downloader, opts)
|
||||||
var err error
|
|
||||||
client, err = plugins.NewClient(opts)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, fmt.Errorf("unable to create plugins client: %w", err)
|
return nil, nil, nil, fmt.Errorf("unable to create plugins manager: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = plugins.SetupRemotePlugins(client, staticCfg.Experimental.Plugins)
|
err = plugins.SetupRemotePlugins(manager, staticCfg.Experimental.Plugins)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, fmt.Errorf("unable to set up plugins environment: %w", err)
|
return nil, nil, nil, fmt.Errorf("unable to set up plugins environment: %w", err)
|
||||||
}
|
}
|
||||||
@@ -57,7 +76,7 @@ func initPlugins(staticCfg *static.Configuration) (*plugins.Client, map[string]p
|
|||||||
localPlgs = staticCfg.Experimental.LocalPlugins
|
localPlgs = staticCfg.Experimental.LocalPlugins
|
||||||
}
|
}
|
||||||
|
|
||||||
return client, plgs, localPlgs, nil
|
return manager, plgs, localPlgs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkUniquePluginNames(e *static.Experimental) error {
|
func checkUniquePluginNames(e *static.Experimental) error {
|
||||||
|
|||||||
@@ -30,9 +30,11 @@ import (
|
|||||||
"github.com/traefik/traefik/v3/pkg/config/dynamic"
|
"github.com/traefik/traefik/v3/pkg/config/dynamic"
|
||||||
"github.com/traefik/traefik/v3/pkg/config/runtime"
|
"github.com/traefik/traefik/v3/pkg/config/runtime"
|
||||||
"github.com/traefik/traefik/v3/pkg/config/static"
|
"github.com/traefik/traefik/v3/pkg/config/static"
|
||||||
"github.com/traefik/traefik/v3/pkg/logs"
|
|
||||||
"github.com/traefik/traefik/v3/pkg/metrics"
|
|
||||||
"github.com/traefik/traefik/v3/pkg/middlewares/accesslog"
|
"github.com/traefik/traefik/v3/pkg/middlewares/accesslog"
|
||||||
|
"github.com/traefik/traefik/v3/pkg/observability/logs"
|
||||||
|
"github.com/traefik/traefik/v3/pkg/observability/metrics"
|
||||||
|
"github.com/traefik/traefik/v3/pkg/observability/tracing"
|
||||||
|
otypes "github.com/traefik/traefik/v3/pkg/observability/types"
|
||||||
"github.com/traefik/traefik/v3/pkg/provider/acme"
|
"github.com/traefik/traefik/v3/pkg/provider/acme"
|
||||||
"github.com/traefik/traefik/v3/pkg/provider/aggregator"
|
"github.com/traefik/traefik/v3/pkg/provider/aggregator"
|
||||||
"github.com/traefik/traefik/v3/pkg/provider/tailscale"
|
"github.com/traefik/traefik/v3/pkg/provider/tailscale"
|
||||||
@@ -46,8 +48,6 @@ import (
|
|||||||
"github.com/traefik/traefik/v3/pkg/server/service"
|
"github.com/traefik/traefik/v3/pkg/server/service"
|
||||||
"github.com/traefik/traefik/v3/pkg/tcp"
|
"github.com/traefik/traefik/v3/pkg/tcp"
|
||||||
traefiktls "github.com/traefik/traefik/v3/pkg/tls"
|
traefiktls "github.com/traefik/traefik/v3/pkg/tls"
|
||||||
"github.com/traefik/traefik/v3/pkg/tracing"
|
|
||||||
"github.com/traefik/traefik/v3/pkg/types"
|
|
||||||
"github.com/traefik/traefik/v3/pkg/version"
|
"github.com/traefik/traefik/v3/pkg/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -505,7 +505,7 @@ func initTailscaleProviders(cfg *static.Configuration, providerAggregator *aggre
|
|||||||
return providers
|
return providers
|
||||||
}
|
}
|
||||||
|
|
||||||
func registerMetricClients(metricsConfig *types.Metrics) []metrics.Registry {
|
func registerMetricClients(metricsConfig *otypes.Metrics) []metrics.Registry {
|
||||||
if metricsConfig == nil {
|
if metricsConfig == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -586,7 +586,7 @@ func appendCertMetric(gauge gokitmetrics.Gauge, certificate *x509.Certificate) {
|
|||||||
gauge.With(labels...).Set(notAfter)
|
gauge.With(labels...).Set(notAfter)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupAccessLog(ctx context.Context, conf *types.AccessLog) *accesslog.Handler {
|
func setupAccessLog(ctx context.Context, conf *otypes.AccessLog) *accesslog.Handler {
|
||||||
if conf == nil {
|
if conf == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
58
docs/content/assets/css/menu-icons.css
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
/* Traefik Hub Menu icon base styles */
|
||||||
|
.menu-icon {
|
||||||
|
height: 18px;
|
||||||
|
width: 18px;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-left: 6px;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
filter: drop-shadow(0 1px 1px rgba(0,0,0,0.1));
|
||||||
|
display: inline;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ensure parent container keeps items inline */
|
||||||
|
.nav-link-with-icon {
|
||||||
|
white-space: nowrap !important;
|
||||||
|
display: inline-flex !important;
|
||||||
|
align-items: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hover effects */
|
||||||
|
.menu-icon:hover {
|
||||||
|
transform: scale(1.05);
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tablet responsive */
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
.menu-icon {
|
||||||
|
height: 14px;
|
||||||
|
width: 14px;
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile responsive */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.menu-icon {
|
||||||
|
height: 12px;
|
||||||
|
width: 12px;
|
||||||
|
margin-left: 3px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Keep mobile navigation items inline */
|
||||||
|
.nav-link-with-icon {
|
||||||
|
display: inline-flex !important;
|
||||||
|
align-items: center !important;
|
||||||
|
width: auto !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* High DPI displays */
|
||||||
|
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
|
||||||
|
.menu-icon {
|
||||||
|
image-rendering: -webkit-optimize-contrast;
|
||||||
|
image-rendering: crisp-edges;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 307 KiB |
BIN
docs/content/assets/img/secure/oidc-auth-flow.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
@@ -15,7 +15,7 @@ Let's see how.
|
|||||||
|
|
||||||
### General
|
### General
|
||||||
|
|
||||||
This [documentation](../../ "Link to the official Traefik documentation") is built with [MkDocs](https://mkdocs.org/ "Link to the website of MkDocs").
|
This [documentation](../index.md "Link to the official Traefik documentation") is built with [MkDocs](https://mkdocs.org/ "Link to the website of MkDocs").
|
||||||
|
|
||||||
### Method 1: `Docker` and `make`
|
### Method 1: `Docker` and `make`
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ Below is a non-exhaustive list of versions and their maintenance status:
|
|||||||
|
|
||||||
| Version | Release Date | Active Support | Security Support |
|
| Version | Release Date | Active Support | Security Support |
|
||||||
|---------|--------------|--------------------|-------------------|
|
|---------|--------------|--------------------|-------------------|
|
||||||
| 3.4 | May 05, 2025 | Yes | Yes |
|
| 3.5 | Jul 23, 2025 | Yes | Yes |
|
||||||
|
| 3.4 | May 05, 2025 | Ended Jul 23, 2025 | No |
|
||||||
| 3.3 | Jan 06, 2025 | Ended May 05, 2025 | No |
|
| 3.3 | Jan 06, 2025 | Ended May 05, 2025 | No |
|
||||||
| 3.2 | Oct 28, 2024 | Ended Jan 06, 2025 | No |
|
| 3.2 | Oct 28, 2024 | Ended Jan 06, 2025 | No |
|
||||||
| 3.1 | Jul 15, 2024 | Ended Oct 28, 2024 | No |
|
| 3.1 | Jul 15, 2024 | Ended Oct 28, 2024 | No |
|
||||||
@@ -33,7 +34,7 @@ Below is a non-exhaustive list of versions and their maintenance status:
|
|||||||
|
|
||||||
This page is maintained and updated periodically to reflect our roadmap and any decisions affecting the end of support for Traefik Proxy.
|
This page is maintained and updated periodically to reflect our roadmap and any decisions affecting the end of support for Traefik Proxy.
|
||||||
|
|
||||||
Please refer to our migration guides for specific instructions on upgrading between versions, an example is the [v2 to v3 migration guide](../migration/v2-to-v3.md).
|
Please refer to our migration guides for specific instructions on upgrading between versions, an example is the [v2 to v3 migration guide](../migrate/v2-to-v3.md).
|
||||||
|
|
||||||
!!! important "All target dates for end of support or feature removal announcements may be subject to change."
|
!!! important "All target dates for end of support or feature removal announcements may be subject to change."
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ This confirms that Traefik is successfully routing requests to your whoami appli
|
|||||||
|
|
||||||
## Add Routing Rules
|
## Add Routing Rules
|
||||||
|
|
||||||
Now we'll enhance our routing by directing traffic to different services based on [URL paths](../reference/routing-configuration/http/router/rules-and-priority.md#path-pathprefix-and-pathregexp). This is useful for API versioning, frontend/backend separation, or organizing microservices.
|
Now we'll enhance our routing by directing traffic to different services based on [URL paths](../reference/routing-configuration/http/routing/rules-and-priority.md#path-pathprefix-and-pathregexp). This is useful for API versioning, frontend/backend separation, or organizing microservices.
|
||||||
|
|
||||||
Update your `docker-compose.yml` to add another service:
|
Update your `docker-compose.yml` to add another service:
|
||||||
|
|
||||||
@@ -258,6 +258,9 @@ labels:
|
|||||||
|
|
||||||
# IP Allowlist Middleware
|
# IP Allowlist Middleware
|
||||||
- "traefik.http.middlewares.ip-allowlist.ipallowlist.sourceRange=127.0.0.1/32,192.168.0.0/16,10.0.0.0/8"
|
- "traefik.http.middlewares.ip-allowlist.ipallowlist.sourceRange=127.0.0.1/32,192.168.0.0/16,10.0.0.0/8"
|
||||||
|
|
||||||
|
# Apply middlewares to whoami router
|
||||||
|
- "traefik.http.routers.whoami.middlewares=secure-headers,ip-allowlist"
|
||||||
```
|
```
|
||||||
|
|
||||||
Add the same middleware to your whoami-api service:
|
Add the same middleware to your whoami-api service:
|
||||||
@@ -454,7 +457,7 @@ These fundamental capabilities provide a solid foundation for exposing any appli
|
|||||||
|
|
||||||
Now that you understand the basics of exposing services with Traefik Proxy, you might want to explore:
|
Now that you understand the basics of exposing services with Traefik Proxy, you might want to explore:
|
||||||
|
|
||||||
- [Advanced routing options](../reference/routing-configuration/http/router/rules-and-priority.md) like query parameter matching, header-based routing, and more
|
- [Advanced routing options](../reference/routing-configuration/http/routing/rules-and-priority.md) like query parameter matching, header-based routing, and more
|
||||||
- [Additional middlewares](../reference/routing-configuration/http/middlewares/overview.md) for authentication, rate limiting, and request modifications
|
- [Additional middlewares](../reference/routing-configuration/http/middlewares/overview.md) for authentication, rate limiting, and request modifications
|
||||||
- [Observability features](../reference/install-configuration/observability/metrics.md) for monitoring and debugging your Traefik deployment
|
- [Observability features](../reference/install-configuration/observability/metrics.md) for monitoring and debugging your Traefik deployment
|
||||||
- [TCP services](../reference/routing-configuration/tcp/service.md) for exposing TCP services
|
- [TCP services](../reference/routing-configuration/tcp/service.md) for exposing TCP services
|
||||||
|
|||||||
@@ -325,11 +325,13 @@ kubectl create secret tls whoami-tls --cert=tls.crt --key=tls.key
|
|||||||
web:
|
web:
|
||||||
port: 80
|
port: 80
|
||||||
protocol: HTTP
|
protocol: HTTP
|
||||||
namespacePolicy: All
|
namespacePolicy:
|
||||||
|
from: All
|
||||||
websecure:
|
websecure:
|
||||||
port: 443
|
port: 443
|
||||||
protocol: HTTPS
|
protocol: HTTPS
|
||||||
namespacePolicy: All
|
namespacePolicy:
|
||||||
|
from: All
|
||||||
mode: Terminate
|
mode: Terminate
|
||||||
certificateRefs:
|
certificateRefs:
|
||||||
- kind: Secret
|
- kind: Secret
|
||||||
@@ -1003,7 +1005,7 @@ These fundamental capabilities provide a solid foundation for exposing any appli
|
|||||||
|
|
||||||
Now that you understand the basics of exposing services with Traefik Proxy, you might want to explore:
|
Now that you understand the basics of exposing services with Traefik Proxy, you might want to explore:
|
||||||
|
|
||||||
- [Advanced routing options](../reference/routing-configuration/http/router/rules-and-priority.md) like query parameter matching, header-based routing, and more
|
- [Advanced routing options](../reference/routing-configuration/http/routing/rules-and-priority.md) like query parameter matching, header-based routing, and more
|
||||||
- [Additional middlewares](../reference/routing-configuration/http/middlewares/overview.md) for authentication, rate limiting, and request modifications
|
- [Additional middlewares](../reference/routing-configuration/http/middlewares/overview.md) for authentication, rate limiting, and request modifications
|
||||||
- [Observability features](../reference/install-configuration/observability/metrics.md) for monitoring and debugging your Traefik deployment
|
- [Observability features](../reference/install-configuration/observability/metrics.md) for monitoring and debugging your Traefik deployment
|
||||||
- [TCP services](../reference/routing-configuration/tcp/service.md) for exposing TCP services
|
- [TCP services](../reference/routing-configuration/tcp/service.md) for exposing TCP services
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ This confirms that Traefik is successfully routing requests to your whoami appli
|
|||||||
|
|
||||||
## Add Routing Rules
|
## Add Routing Rules
|
||||||
|
|
||||||
Now we'll enhance our routing by directing traffic to different services based on [URL paths](../reference/routing-configuration/http/router/rules-and-priority.md#path-pathprefix-and-pathregexp). This is useful for API versioning, frontend/backend separation, or organizing microservices.
|
Now we'll enhance our routing by directing traffic to different services based on [URL paths](../reference/routing-configuration/http/routing/rules-and-priority.md#path-pathprefix-and-pathregexp). This is useful for API versioning, frontend/backend separation, or organizing microservices.
|
||||||
|
|
||||||
Update your `docker-compose.yml` to add another service:
|
Update your `docker-compose.yml` to add another service:
|
||||||
|
|
||||||
@@ -393,7 +393,7 @@ These fundamental capabilities provide a solid foundation for exposing any appli
|
|||||||
|
|
||||||
Now that you understand the basics of exposing services with Traefik Proxy, you might want to explore:
|
Now that you understand the basics of exposing services with Traefik Proxy, you might want to explore:
|
||||||
|
|
||||||
- [Advanced routing options](../reference/routing-configuration/http/router/rules-and-priority.md) like query parameter matching, header-based routing, and more
|
- [Advanced routing options](../reference/routing-configuration/http/routing/rules-and-priority.md) like query parameter matching, header-based routing, and more
|
||||||
- [Additional middlewares](../reference/routing-configuration/http/middlewares/overview.md) for authentication, rate limiting, and request modifications
|
- [Additional middlewares](../reference/routing-configuration/http/middlewares/overview.md) for authentication, rate limiting, and request modifications
|
||||||
- [Observability features](../reference/install-configuration/observability/metrics.md) for monitoring and debugging your Traefik deployment
|
- [Observability features](../reference/install-configuration/observability/metrics.md) for monitoring and debugging your Traefik deployment
|
||||||
- [TCP services](../reference/routing-configuration/tcp/service.md) for exposing TCP services
|
- [TCP services](../reference/routing-configuration/tcp/service.md) for exposing TCP services
|
||||||
|
|||||||
56
docs/content/extend/extend-traefik.md
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
---
|
||||||
|
title: Extend Traefik
|
||||||
|
description: Extend Traefik with custom plugins using Yaegi and WebAssembly.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Extend Traefik
|
||||||
|
|
||||||
|
Plugins are a powerful feature for extending Traefik with custom features and behaviors. The [Plugin Catalog](https://plugins.traefik.io/) is a software-as-a-service (SaaS) platform that provides an exhaustive list of the existing plugins.
|
||||||
|
|
||||||
|
??? note "Plugin Catalog Access"
|
||||||
|
You can reach the [Plugin Catalog](https://plugins.traefik.io/) from the Traefik Dashboard using the `Plugins` menu entry.
|
||||||
|
|
||||||
|
## Add a new plugin to a Traefik instance
|
||||||
|
|
||||||
|
To add a new plugin to a Traefik instance, you must change that instance's install (static) configuration. Each plugin's **Install** section provides an install (static) configuration example. Many plugins have their own section in the Traefik routing (dynamic) configuration.
|
||||||
|
|
||||||
|
!!! danger "Experimental Features"
|
||||||
|
Plugins can change the behavior of Traefik in unforeseen ways. Exercise caution when adding new plugins to production Traefik instances.
|
||||||
|
|
||||||
|
To learn more about how to add a new plugin to a Traefik instance, please refer to the [developer documentation](https://plugins.traefik.io/install).
|
||||||
|
|
||||||
|
## Plugin Systems
|
||||||
|
|
||||||
|
Traefik supports two different plugin systems, each designed for different use cases and developer preferences.
|
||||||
|
|
||||||
|
### Yaegi Plugin System
|
||||||
|
|
||||||
|
Traefik [Yaegi](https://github.com/traefik/yaegi) plugins are developed using the Go language. It is essentially a Go package. Unlike pre-compiled plugins, Yaegi plugins are executed on the fly by Yaegi, a Go interpreter embedded in Traefik.
|
||||||
|
|
||||||
|
This approach eliminates the need for compilation and a complex toolchain, making plugin development as straightforward as creating web browser extensions. Yaegi plugins support both middleware and provider functionality.
|
||||||
|
|
||||||
|
#### Key characteristics
|
||||||
|
|
||||||
|
- Written in Go language
|
||||||
|
- No compilation required
|
||||||
|
- Executed by embedded interpreter
|
||||||
|
- Supports full Go feature set
|
||||||
|
- Hot-reloadable during development
|
||||||
|
|
||||||
|
### WebAssembly (WASM) Plugin System
|
||||||
|
|
||||||
|
Traefik WASM plugins can be developed using any language that compiles to WebAssembly (WASM). This method is based on [http-wasm](https://http-wasm.io/).
|
||||||
|
|
||||||
|
WASM plugins compile to portable binary modules that execute with near-native performance while maintaining security isolation.
|
||||||
|
|
||||||
|
#### Key characteristics
|
||||||
|
|
||||||
|
- Multi-language support (Go, Rust, C++, etc.)
|
||||||
|
- Compiled to WebAssembly binary
|
||||||
|
- Near-native performance
|
||||||
|
- Strong security isolation
|
||||||
|
- Currently supports middleware only
|
||||||
|
|
||||||
|
## Build Your Own Plugins
|
||||||
|
|
||||||
|
Traefik users can create their own plugins and share them with the community using the [Plugin Catalog](https://plugins.traefik.io/). To learn more about Traefik plugin creation, please refer to the [developer documentation](https://plugins.traefik.io/create).
|
||||||
@@ -12,10 +12,10 @@ How the Magic Happens
|
|||||||
|
|
||||||
Configuration in Traefik can refer to two different things:
|
Configuration in Traefik can refer to two different things:
|
||||||
|
|
||||||
- The fully dynamic routing configuration (referred to as the _dynamic configuration_)
|
- The fully dynamic routing configuration (referred to as the _routing configuration_, formerly known as the _dynamic configuration_)
|
||||||
- The startup configuration (referred to as the _static configuration_)
|
- The startup configuration (referred to as the _install configuration_, formerly known as the _static configuration_)
|
||||||
|
|
||||||
Elements in the _static configuration_ set up connections to [providers](../providers/overview.md) and define the [entrypoints](../routing/entrypoints.md) Traefik will listen to (these elements don't change often).
|
Elements in the install configuration_ set up connections to [providers](../providers/overview.md) and define the [entrypoints](../routing/entrypoints.md) Traefik will listen to (these elements don't change often).
|
||||||
|
|
||||||
The _dynamic configuration_ contains everything that defines how the requests are handled by your system.
|
The _dynamic configuration_ contains everything that defines how the requests are handled by your system.
|
||||||
This configuration can change and is seamlessly hot-reloaded, without any request interruption or connection loss.
|
This configuration can change and is seamlessly hot-reloaded, without any request interruption or connection loss.
|
||||||
@@ -32,9 +32,9 @@ Since this configuration is specific to your infrastructure choices, we invite y
|
|||||||
|
|
||||||
!!! info ""
|
!!! info ""
|
||||||
|
|
||||||
In the [Quick Start example](../getting-started/quick-start.md), the dynamic configuration comes from docker in the form of labels attached to your containers.
|
In the [Quick Start example](../getting-started/quick-start.md), the routing configuration comes from docker in the form of labels attached to your containers.
|
||||||
|
|
||||||
!!! info "HTTPS Certificates also belong to the dynamic configuration."
|
!!! info "HTTPS Certificates also belong to the routing configuration."
|
||||||
|
|
||||||
You can add / update / remove them without restarting your Traefik instance.
|
You can add / update / remove them without restarting your Traefik instance.
|
||||||
|
|
||||||
@@ -82,11 +82,11 @@ docker run traefik[:version] --help
|
|||||||
# ex: docker run traefik:v3.5 --help
|
# ex: docker run traefik:v3.5 --help
|
||||||
```
|
```
|
||||||
|
|
||||||
Check the [CLI reference](../reference/static-configuration/cli.md "Link to CLI reference overview") for an overview about all available arguments.
|
Check the [CLI reference](../reference/install-configuration/configuration-options.md "Link to CLI reference overview") for an overview about all available arguments.
|
||||||
|
|
||||||
### Environment Variables
|
### Environment Variables
|
||||||
|
|
||||||
All available environment variables can be found in the [static configuration environment overview](../reference/static-configuration/env.md).
|
All available environment variables can be found in the [static configuration environment overview](../reference/install-configuration/configuration-options.md).
|
||||||
|
|
||||||
## Available Configuration Options
|
## Available Configuration Options
|
||||||
|
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ and while the documentation often demonstrates configuration options through fil
|
|||||||
the core feature of Traefik is its dynamic configurability,
|
the core feature of Traefik is its dynamic configurability,
|
||||||
directly reacting to changes from providers over time.
|
directly reacting to changes from providers over time.
|
||||||
|
|
||||||
Notably, a part of the configuration is [static](../configuration-overview/#the-static-configuration),
|
Notably, a part of the configuration is [static](./configuration-overview.md#the-static-configuration),
|
||||||
and can be provided by a file on startup, whereas various providers,
|
and can be provided by a file on startup, whereas various providers,
|
||||||
such as the file provider,
|
such as the file provider,
|
||||||
contribute dynamically all along the traefik instance lifetime to its [dynamic configuration](../configuration-overview/#the-dynamic-configuration) changes.
|
contribute dynamically all along the traefik instance lifetime to its [dynamic configuration](./configuration-overview.md#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),
|
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).
|
as apposed to the Router which is more about the Presentation (TLS) and Application layers (HTTP).
|
||||||
@@ -147,13 +147,13 @@ for example, by using the `touch` command on the configuration file.
|
|||||||
|
|
||||||
By default, the following headers are automatically added when proxying requests:
|
By default, the following headers are automatically added when proxying requests:
|
||||||
|
|
||||||
| Property | HTTP Header |
|
| Property | HTTP Header |
|
||||||
|---------------------------|----------------------------|
|
|---------------------------|--------------------------------|
|
||||||
| Client's IP | X-Forwarded-For, X-Real-Ip |
|
| Client's IP | `X-Forwarded-For`, `X-Real-Ip` |
|
||||||
| Host | X-Forwarded-Host |
|
| Host | `X-Forwarded-Host` |
|
||||||
| Port | X-Forwarded-Port |
|
| Port | `X-Forwarded-Port` |
|
||||||
| Protocol | X-Forwarded-Proto |
|
| Protocol | `X-Forwarded-Proto` |
|
||||||
| Proxy Server's Hostname | X-Forwarded-Server |
|
| Proxy Server's Hostname | `X-Forwarded-Server` |
|
||||||
|
|
||||||
For more details,
|
For more details,
|
||||||
please check out the [forwarded header](../routing/entrypoints.md#forwarded-headers) documentation.
|
please check out the [forwarded header](../routing/entrypoints.md#forwarded-headers) documentation.
|
||||||
|
|||||||
@@ -79,7 +79,10 @@ providers:
|
|||||||
kubernetesGateway:
|
kubernetesGateway:
|
||||||
enabled: true
|
enabled: true
|
||||||
gateway:
|
gateway:
|
||||||
namespacePolicy: All
|
listeners:
|
||||||
|
web:
|
||||||
|
namespacePolicy:
|
||||||
|
from: All
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
@@ -106,7 +109,7 @@ helm install traefik traefik/traefik --wait \
|
|||||||
--set ingressRoute.dashboard.matchRule='Host(`dashboard.localhost`)' \
|
--set ingressRoute.dashboard.matchRule='Host(`dashboard.localhost`)' \
|
||||||
--set ingressRoute.dashboard.entryPoints={web} \
|
--set ingressRoute.dashboard.entryPoints={web} \
|
||||||
--set providers.kubernetesGateway.enabled=true \
|
--set providers.kubernetesGateway.enabled=true \
|
||||||
--set gateway.namespacePolicy=All
|
--set gateway.listeners.web.namespacePolicy.from=All
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
|
|||||||
59
docs/content/govern/index.md
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
title: "Govern Your APIs with Traefik Hub"
|
||||||
|
description: "Learn how Traefik Hub provides comprehensive API Gateway and API Management capabilities to govern, secure, and manage your APIs at scale."
|
||||||
|
---
|
||||||
|
|
||||||
|
# Govern Your APIs with Traefik Hub
|
||||||
|
|
||||||
|
Traefik Hub transforms your API infrastructure by providing enterprise-grade API Gateway and comprehensive API Management capabilities. Built on the foundation of Traefik Proxy, Hub enables organizations to govern, secure, and manage APIs at scale across cloud-native environments.
|
||||||
|
|
||||||
|
## API Gateway and API Management Capabilities
|
||||||
|
|
||||||
|
Traefik Hub offers two complementary approaches to API governance:
|
||||||
|
|
||||||
|
- [Traefik Hub API Gateway](https://traefik.io/solutions/api-gateway/): Enterprise-grade security, distributed features, and advanced access control for cloud-native API gateway scenarios. It includes AI Gateway capabilities for modern machine learning workloads.
|
||||||
|
|
||||||
|
- [Traefik Hub API Management](https://traefik.io/solutions/api-management/): Comprehensive API lifecycle management, developer portals, and organizational features for teams managing multiple APIs across environments.
|
||||||
|
|
||||||
|
## API Management Features
|
||||||
|
|
||||||
|
Traefik Hub API Management provides a complete suite of features designed to streamline API governance and accelerate developer productivity:
|
||||||
|
|
||||||
|
### Comprehensive API Lifecycle Management
|
||||||
|
|
||||||
|
- **Centralized API Catalog**: Comprehensive API inventory providing real-time visibility and control
|
||||||
|
- **Advanced Versioning**: Utilize the most flexible API versioning and Kubernetes-native labels to logically organize APIs, track their evolution over time, and avoid breaking changes for client applications
|
||||||
|
- **Quality Control**: Perform error checks and change impact analysis with Traefik Hub's static analyzer to ensure compliance and prevent misconfiguration by catching errors early
|
||||||
|
- **Resource Management**: Centralize rate limits, quotas, and policy enforcement across groups of APIs through Plans & Bundles, ensuring consistent and efficient resource management
|
||||||
|
- **Subscription Management**: Create managed and self-serve subscriptions for enhanced ease-of-use, security, and auditability
|
||||||
|
- **Standards Compliance**: Import, validate, and manage APIs using industry-standard OpenAPI specifications
|
||||||
|
|
||||||
|
### Developer Experience & Self-Service
|
||||||
|
|
||||||
|
- **Customizable Portals**: Easily create one or more dedicated API Portals for developers to discover, understand, and interact with your APIs
|
||||||
|
- **Interactive API Testing**: Allow developers to test APIs directly within the portal for immediate feedback
|
||||||
|
- **Branded Experience**: Customize the API portal to house API documentation, clear integration instructions, and personalized content to foster adoption and streamline development
|
||||||
|
- **Credential Management**: Generate API access credentials, such as API keys, directly from the portal for simplified access and secure integration
|
||||||
|
- **Auto-generated Documentation**: Automatically generated, interactive API documentation from OpenAPI specifications in the portal
|
||||||
|
|
||||||
|
### Enterprise-Grade Security
|
||||||
|
|
||||||
|
- **Access Control**: Implement fine-grained permissions through detailed API policies and JWT inspection to secure access to API resources
|
||||||
|
- **Identity Integration**: Leverage existing identity and access management (IAM) solutions, such as Keycloak, Okta, Auth0, etc. through industry-standard authentication protocols, including native OIDC support
|
||||||
|
- **Data Protection**: Advanced TLS management, supporting Let's Encrypt (ACME) and SPIFFE for robust data protection
|
||||||
|
- **Threat Prevention**: Native Web Application Firewall (WAF) powered by OWASP Coraza to defend against known vulnerabilities
|
||||||
|
|
||||||
|
### Observability
|
||||||
|
|
||||||
|
- **Open Standards Monitoring**: Gain deep insights into API health and performance with OpenTelemetry integration to provide metrics and tracing capabilities without vendor lock-in
|
||||||
|
- **Third-party Integrations**: Turnkey integration with Treblle directly on the Traefik Hub Dashboard for real-time, out-of-the-box observability without maintaining a complex monitoring infrastructure
|
||||||
|
- **Pre-built Grafana Dashboards**: Ready-to-use monitoring dashboards with key API metrics and performance indicators
|
||||||
|
|
||||||
|
## Getting Started with API Governance
|
||||||
|
|
||||||
|
Transform your API infrastructure with Traefik Hub's governance capabilities:
|
||||||
|
|
||||||
|
1. **Start with API Gateway**: Implement enterprise security, authentication, distributed features, and AI Gateway capabilities
|
||||||
|
2. **Scale with API Management**: Add comprehensive lifecycle management, developer portals, and governance features
|
||||||
|
|
||||||
|
Ready to govern your APIs at scale? Explore [Traefik Hub API Management](https://traefik.io/solutions/api-management/) and discover how it can transform your API strategy.
|
||||||
@@ -314,7 +314,7 @@ Use the `DNS-01` challenge to generate and renew ACME certificates by provisioni
|
|||||||
!!! warning "`CNAME` support"
|
!!! warning "`CNAME` support"
|
||||||
|
|
||||||
`CNAME` are supported (and sometimes even [encouraged](https://letsencrypt.org/2019/10/09/onboarding-your-customers-with-lets-encrypt-and-acme.html#the-advantages-of-a-cname)),
|
`CNAME` are supported (and sometimes even [encouraged](https://letsencrypt.org/2019/10/09/onboarding-your-customers-with-lets-encrypt-and-acme.html#the-advantages-of-a-cname)),
|
||||||
but there are a few cases where they can be [problematic](../../getting-started/faq/#why-does-lets-encrypt-wildcard-certificate-renewalgeneration-with-dns-challenge-fail).
|
but there are a few cases where they can be [problematic](../getting-started/faq.md#why-does-lets-encrypt-wildcard-certificate-renewalgeneration-with-dns-challenge-fail).
|
||||||
|
|
||||||
If needed, `CNAME` support can be disabled with the following environment variable:
|
If needed, `CNAME` support can be disabled with the following environment variable:
|
||||||
|
|
||||||
@@ -352,13 +352,16 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
|||||||
| [Auroradns](https://www.pcextreme.com/dns-health-checks) | `auroradns` | `AURORA_USER_ID`, `AURORA_KEY`, `AURORA_ENDPOINT` | [Additional configuration](https://go-acme.github.io/lego/dns/auroradns) |
|
| [Auroradns](https://www.pcextreme.com/dns-health-checks) | `auroradns` | `AURORA_USER_ID`, `AURORA_KEY`, `AURORA_ENDPOINT` | [Additional configuration](https://go-acme.github.io/lego/dns/auroradns) |
|
||||||
| [Autodns](https://www.internetx.com/domains/autodns/) | `autodns` | `AUTODNS_API_USER`, `AUTODNS_API_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/autodns) |
|
| [Autodns](https://www.internetx.com/domains/autodns/) | `autodns` | `AUTODNS_API_USER`, `AUTODNS_API_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/autodns) |
|
||||||
| [Axelname](https://axelname.ru) | `axelname` | `AXELNAME_NICKNAME`, `AXELNAME_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/axelname) |
|
| [Axelname](https://axelname.ru) | `axelname` | `AXELNAME_NICKNAME`, `AXELNAME_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/axelname) |
|
||||||
| [Azure](https://azure.microsoft.com/services/dns/) (DEPRECATED) | `azure` | `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, `AZURE_SUBSCRIPTION_ID`, `AZURE_TENANT_ID`, `AZURE_RESOURCE_GROUP`, `[AZURE_METADATA_ENDPOINT]` | [Additional configuration](https://go-acme.github.io/lego/dns/azure) |
|
| [Azion](https://www.azion.com/en/products/edge-dns/) | `azion` | `AZION_PERSONAL_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/azion) |
|
||||||
|
| [Azure](https://azure.microsoft.com/services/dns/) (DEPRECATED) | `azure` | DEPRECATED use `azuredns` instead. | [Additional configuration](https://go-acme.github.io/lego/dns/azure) |
|
||||||
| [AzureDNS](https://azure.microsoft.com/services/dns/) | `azuredns` | `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, `AZURE_TENANT_ID`, `AZURE_SUBSCRIPTION_ID`, `AZURE_RESOURCE_GROUP`, `[AZURE_ENVIRONMENT]`, `[AZURE_PRIVATE_ZONE]`, `[AZURE_ZONE_NAME]` | [Additional configuration](https://go-acme.github.io/lego/dns/azuredns) |
|
| [AzureDNS](https://azure.microsoft.com/services/dns/) | `azuredns` | `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, `AZURE_TENANT_ID`, `AZURE_SUBSCRIPTION_ID`, `AZURE_RESOURCE_GROUP`, `[AZURE_ENVIRONMENT]`, `[AZURE_PRIVATE_ZONE]`, `[AZURE_ZONE_NAME]` | [Additional configuration](https://go-acme.github.io/lego/dns/azuredns) |
|
||||||
| [Baidu Cloud](https://cloud.baidu.com) | `baiducloud` | `BAIDUCLOUD_ACCESS_KEY_ID`, `BAIDUCLOUD_SECRET_ACCESS_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/baiducloud) |
|
| [Baidu Cloud](https://cloud.baidu.com) | `baiducloud` | `BAIDUCLOUD_ACCESS_KEY_ID`, `BAIDUCLOUD_SECRET_ACCESS_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/baiducloud) |
|
||||||
|
| [Beget](https://beget.com/) | `beget` | `BEGET_USERNAME`, `BEGET_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/beget) |
|
||||||
|
| [Binary Lane](https://www.binarylane.com.au/) | `binarylane` | `BINARYLANE_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/binarylane) |
|
||||||
| [Bindman](https://github.com/labbsr0x/bindman-dns-webhook) | `bindman` | `BINDMAN_MANAGER_ADDRESS` | [Additional configuration](https://go-acme.github.io/lego/dns/bindman) |
|
| [Bindman](https://github.com/labbsr0x/bindman-dns-webhook) | `bindman` | `BINDMAN_MANAGER_ADDRESS` | [Additional configuration](https://go-acme.github.io/lego/dns/bindman) |
|
||||||
| [Blue Cat](https://www.bluecatnetworks.com/) | `bluecat` | `BLUECAT_SERVER_URL`, `BLUECAT_USER_NAME`, `BLUECAT_PASSWORD`, `BLUECAT_CONFIG_NAME`, `BLUECAT_DNS_VIEW` | [Additional configuration](https://go-acme.github.io/lego/dns/bluecat) |
|
| [Blue Cat](https://www.bluecatnetworks.com/) | `bluecat` | `BLUECAT_SERVER_URL`, `BLUECAT_USER_NAME`, `BLUECAT_PASSWORD`, `BLUECAT_CONFIG_NAME`, `BLUECAT_DNS_VIEW` | [Additional configuration](https://go-acme.github.io/lego/dns/bluecat) |
|
||||||
| [BookMyName](https://www.bookmyname.com) | `bookmyname` | `BOOKMYNAME_USERNAME`, `BOOKMYNAME_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/bookmyname) |
|
| [BookMyName](https://www.bookmyname.com) | `bookmyname` | `BOOKMYNAME_USERNAME`, `BOOKMYNAME_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/bookmyname) |
|
||||||
| [Brandit](https://www.brandit.com) (DEPRECATED) | `brandit` | `BRANDIT_API_USERNAME`, `BRANDIT_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/brandit) |
|
| [Brandit](https://www.brandit.com) (DEPRECATED) | `brandit` | DEPRECATED | [Additional configuration](https://go-acme.github.io/lego/dns/brandit) |
|
||||||
| [Bunny](https://bunny.net) | `bunny` | `BUNNY_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/bunny) |
|
| [Bunny](https://bunny.net) | `bunny` | `BUNNY_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/bunny) |
|
||||||
| [Checkdomain](https://www.checkdomain.de/) | `checkdomain` | `CHECKDOMAIN_TOKEN`, | [Additional configuration](https://go-acme.github.io/lego/dns/checkdomain/) |
|
| [Checkdomain](https://www.checkdomain.de/) | `checkdomain` | `CHECKDOMAIN_TOKEN`, | [Additional configuration](https://go-acme.github.io/lego/dns/checkdomain/) |
|
||||||
| [Civo](https://www.civo.com/) | `civo` | `CIVO_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/civo) |
|
| [Civo](https://www.civo.com/) | `civo` | `CIVO_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/civo) |
|
||||||
@@ -366,7 +369,8 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
|||||||
| [CloudDNS](https://vshosting.eu/) | `clouddns` | `CLOUDDNS_CLIENT_ID`, `CLOUDDNS_EMAIL`, `CLOUDDNS_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/clouddns) |
|
| [CloudDNS](https://vshosting.eu/) | `clouddns` | `CLOUDDNS_CLIENT_ID`, `CLOUDDNS_EMAIL`, `CLOUDDNS_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/clouddns) |
|
||||||
| [Cloudflare](https://www.cloudflare.com) | `cloudflare` | `CF_API_EMAIL`, `CF_API_KEY` [^5] or `CF_DNS_API_TOKEN`, `[CF_ZONE_API_TOKEN]` | [Additional configuration](https://go-acme.github.io/lego/dns/cloudflare) |
|
| [Cloudflare](https://www.cloudflare.com) | `cloudflare` | `CF_API_EMAIL`, `CF_API_KEY` [^5] or `CF_DNS_API_TOKEN`, `[CF_ZONE_API_TOKEN]` | [Additional configuration](https://go-acme.github.io/lego/dns/cloudflare) |
|
||||||
| [ClouDNS](https://www.cloudns.net/) | `cloudns` | `CLOUDNS_AUTH_ID`, `CLOUDNS_AUTH_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/cloudns) |
|
| [ClouDNS](https://www.cloudns.net/) | `cloudns` | `CLOUDNS_AUTH_ID`, `CLOUDNS_AUTH_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/cloudns) |
|
||||||
| [CloudXNS](https://www.cloudxns.net) (DEPRECATED) | `cloudxns` | `CLOUDXNS_API_KEY`, `CLOUDXNS_SECRET_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/cloudxns) |
|
| [CloudXNS](https://www.cloudxns.net) (DEPRECATED) | `cloudxns` | DEPRECATED | [Additional configuration](https://go-acme.github.io/lego/dns/cloudxns) |
|
||||||
|
| [ConoHa v3](https://www.conoha.jp/) | `conohav3` | `CONOHAV3_TENANT_ID`, `CONOHAV3_API_USER_ID`, `CONOHAV3_API_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/conohav3) |
|
||||||
| [ConoHa](https://www.conoha.jp) | `conoha` | `CONOHA_TENANT_ID`, `CONOHA_API_USERNAME`, `CONOHA_API_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/conoha) |
|
| [ConoHa](https://www.conoha.jp) | `conoha` | `CONOHA_TENANT_ID`, `CONOHA_API_USERNAME`, `CONOHA_API_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/conoha) |
|
||||||
| [Constellix](https://constellix.com) | `constellix` | `CONSTELLIX_API_KEY`, `CONSTELLIX_SECRET_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/constellix) |
|
| [Constellix](https://constellix.com) | `constellix` | `CONSTELLIX_API_KEY`, `CONSTELLIX_SECRET_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/constellix) |
|
||||||
| [Core-Networks](https://www.core-networks.de) | `corenetworks` | `CORENETWORKS_LOGIN`, `CORENETWORKS_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/corenetworks) |
|
| [Core-Networks](https://www.core-networks.de) | `corenetworks` | `CORENETWORKS_LOGIN`, `CORENETWORKS_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/corenetworks) |
|
||||||
@@ -378,12 +382,13 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
|||||||
| [DNS Made Easy](https://dnsmadeeasy.com) | `dnsmadeeasy` | `DNSMADEEASY_API_KEY`, `DNSMADEEASY_API_SECRET`, `DNSMADEEASY_SANDBOX` | [Additional configuration](https://go-acme.github.io/lego/dns/dnsmadeeasy) |
|
| [DNS Made Easy](https://dnsmadeeasy.com) | `dnsmadeeasy` | `DNSMADEEASY_API_KEY`, `DNSMADEEASY_API_SECRET`, `DNSMADEEASY_SANDBOX` | [Additional configuration](https://go-acme.github.io/lego/dns/dnsmadeeasy) |
|
||||||
| [dnsHome.de](https://www.dnshome.de) | `dnsHomede` | `DNSHOMEDE_CREDENTIALS` | [Additional configuration](https://go-acme.github.io/lego/dns/dnshomede) |
|
| [dnsHome.de](https://www.dnshome.de) | `dnsHomede` | `DNSHOMEDE_CREDENTIALS` | [Additional configuration](https://go-acme.github.io/lego/dns/dnshomede) |
|
||||||
| [DNSimple](https://dnsimple.com) | `dnsimple` | `DNSIMPLE_OAUTH_TOKEN`, `DNSIMPLE_BASE_URL` | [Additional configuration](https://go-acme.github.io/lego/dns/dnsimple) |
|
| [DNSimple](https://dnsimple.com) | `dnsimple` | `DNSIMPLE_OAUTH_TOKEN`, `DNSIMPLE_BASE_URL` | [Additional configuration](https://go-acme.github.io/lego/dns/dnsimple) |
|
||||||
| [DNSPod](https://www.dnspod.com/) | `dnspod` | `DNSPOD_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/dnspod) |
|
| [DNSPod](https://www.dnspod.com/) (DEPRECATED) | `dnspod` | DEPRECATED use `tencentcloud` instead. | [Additional configuration](https://go-acme.github.io/lego/dns/dnspod) |
|
||||||
| [Domain Offensive (do.de)](https://www.do.de/) | `dode` | `DODE_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/dode) |
|
| [Domain Offensive (do.de)](https://www.do.de/) | `dode` | `DODE_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/dode) |
|
||||||
| [Domeneshop](https://domene.shop) | `domeneshop` | `DOMENESHOP_API_TOKEN`, `DOMENESHOP_API_SECRET` | [Additional configuration](https://go-acme.github.io/lego/dns/domeneshop) |
|
| [Domeneshop](https://domene.shop) | `domeneshop` | `DOMENESHOP_API_TOKEN`, `DOMENESHOP_API_SECRET` | [Additional configuration](https://go-acme.github.io/lego/dns/domeneshop) |
|
||||||
| [DreamHost](https://www.dreamhost.com/) | `dreamhost` | `DREAMHOST_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/dreamhost) |
|
| [DreamHost](https://www.dreamhost.com/) | `dreamhost` | `DREAMHOST_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/dreamhost) |
|
||||||
| [Duck DNS](https://www.duckdns.org/) | `duckdns` | `DUCKDNS_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/duckdns) |
|
| [Duck DNS](https://www.duckdns.org/) | `duckdns` | `DUCKDNS_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/duckdns) |
|
||||||
| [Dyn](https://dyn.com) | `dyn` | `DYN_CUSTOMER_NAME`, `DYN_USER_NAME`, `DYN_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/dyn) |
|
| [Dyn](https://dyn.com) | `dyn` | `DYN_CUSTOMER_NAME`, `DYN_USER_NAME`, `DYN_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/dyn) |
|
||||||
|
| [DynDnsFree.de](https://www.dyndnsfree.de) | `dyndnsfree` | `DYNDNSFREE_USERNAME`, `DYNDNSFREE_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/dyndnsfree) |
|
||||||
| [Dynu](https://www.dynu.com) | `dynu` | `DYNU_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/dynu) |
|
| [Dynu](https://www.dynu.com) | `dynu` | `DYNU_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/dynu) |
|
||||||
| [EasyDNS](https://easydns.com/) | `easydns` | `EASYDNS_TOKEN`, `EASYDNS_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/easydns) |
|
| [EasyDNS](https://easydns.com/) | `easydns` | `EASYDNS_TOKEN`, `EASYDNS_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/easydns) |
|
||||||
| [EdgeDNS](https://www.akamai.com/) | `edgedns` | `AKAMAI_CLIENT_TOKEN`, `AKAMAI_CLIENT_SECRET`, `AKAMAI_ACCESS_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/edgedns) |
|
| [EdgeDNS](https://www.akamai.com/) | `edgedns` | `AKAMAI_CLIENT_TOKEN`, `AKAMAI_CLIENT_SECRET`, `AKAMAI_ACCESS_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/edgedns) |
|
||||||
@@ -399,9 +404,10 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
|||||||
| [Glesys](https://glesys.com/) | `glesys` | `GLESYS_API_USER`, `GLESYS_API_KEY`, `GLESYS_DOMAIN` | [Additional configuration](https://go-acme.github.io/lego/dns/glesys) |
|
| [Glesys](https://glesys.com/) | `glesys` | `GLESYS_API_USER`, `GLESYS_API_KEY`, `GLESYS_DOMAIN` | [Additional configuration](https://go-acme.github.io/lego/dns/glesys) |
|
||||||
| [GoDaddy](https://www.godaddy.com) | `godaddy` | `GODADDY_API_KEY`, `GODADDY_API_SECRET` | [Additional configuration](https://go-acme.github.io/lego/dns/godaddy) |
|
| [GoDaddy](https://www.godaddy.com) | `godaddy` | `GODADDY_API_KEY`, `GODADDY_API_SECRET` | [Additional configuration](https://go-acme.github.io/lego/dns/godaddy) |
|
||||||
| [Google Cloud DNS](https://cloud.google.com/dns/docs/) | `gcloud` | `GCE_PROJECT`, Application Default Credentials [^2] [^3], [`GCE_SERVICE_ACCOUNT_FILE`] | [Additional configuration](https://go-acme.github.io/lego/dns/gcloud) |
|
| [Google Cloud DNS](https://cloud.google.com/dns/docs/) | `gcloud` | `GCE_PROJECT`, Application Default Credentials [^2] [^3], [`GCE_SERVICE_ACCOUNT_FILE`] | [Additional configuration](https://go-acme.github.io/lego/dns/gcloud) |
|
||||||
| [Google Domains](https://domains.google) | `googledomains` | `GOOGLE_DOMAINS_ACCESS_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/googledomains) |
|
| [Google Domains](https://domains.google) (DEPRECATED) | `googledomains` | DEPRECATED | [Additional configuration](https://go-acme.github.io/lego/dns/googledomains) |
|
||||||
| [Hetzner](https://hetzner.com) | `hetzner` | `HETZNER_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/hetzner) |
|
| [Hetzner](https://hetzner.com) | `hetzner` | `HETZNER_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/hetzner) |
|
||||||
| [hosting.de](https://www.hosting.de) | `hostingde` | `HOSTINGDE_API_KEY`, `HOSTINGDE_ZONE_NAME` | [Additional configuration](https://go-acme.github.io/lego/dns/hostingde) |
|
| [hosting.de](https://www.hosting.de) | `hostingde` | `HOSTINGDE_API_KEY`, `HOSTINGDE_ZONE_NAME` | [Additional configuration](https://go-acme.github.io/lego/dns/hostingde) |
|
||||||
|
| [Hostinger](https://www.hostinger.com/) | `hostinger` | `HOSTINGER_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/hostinger) |
|
||||||
| [Hosttech](https://www.hosttech.eu) | `hosttech` | `HOSTTECH_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/hosttech) |
|
| [Hosttech](https://www.hosttech.eu) | `hosttech` | `HOSTTECH_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/hosttech) |
|
||||||
| [http.net](https://www.http.net/) | `httpnet` | `HTTPNET_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/httpnet) |
|
| [http.net](https://www.http.net/) | `httpnet` | `HTTPNET_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/httpnet) |
|
||||||
| [Huawei Cloud](https://huaweicloud.com) | `huaweicloud` | `HUAWEICLOUD_ACCESS_KEY_ID`, `HUAWEICLOUD_SECRET_ACCESS_KEY`, `HUAWEICLOUD_REGION` | [Additional configuration](https://go-acme.github.io/lego/dns/huaweicloud) |
|
| [Huawei Cloud](https://huaweicloud.com) | `huaweicloud` | `HUAWEICLOUD_ACCESS_KEY_ID`, `HUAWEICLOUD_SECRET_ACCESS_KEY`, `HUAWEICLOUD_REGION` | [Additional configuration](https://go-acme.github.io/lego/dns/huaweicloud) |
|
||||||
@@ -418,6 +424,7 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
|||||||
| [IPv64](https://ipv64.net) | `ipv64` | `IPV64_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/ipv64) |
|
| [IPv64](https://ipv64.net) | `ipv64` | `IPV64_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/ipv64) |
|
||||||
| [iwantmyname](https://iwantmyname.com) | `iwantmyname` | `IWANTMYNAME_USERNAME` , `IWANTMYNAME_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/iwantmyname) |
|
| [iwantmyname](https://iwantmyname.com) | `iwantmyname` | `IWANTMYNAME_USERNAME` , `IWANTMYNAME_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/iwantmyname) |
|
||||||
| [Joker.com](https://joker.com) | `joker` | `JOKER_API_MODE` with `JOKER_API_KEY` or `JOKER_USERNAME`, `JOKER_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/joker) |
|
| [Joker.com](https://joker.com) | `joker` | `JOKER_API_MODE` with `JOKER_API_KEY` or `JOKER_USERNAME`, `JOKER_PASSWORD` | [Additional configuration](https://go-acme.github.io/lego/dns/joker) |
|
||||||
|
| [KeyHelp](https://www.keyweb.de/en/keyhelp/keyhelp/) | `keyhelp` | `KEYHELP_API_KEY`, `KEYHELP_BASE_URL` | [Additional configuration](https://go-acme.github.io/lego/dns/keyhelp) |
|
||||||
| [Liara](https://liara.ir) | `liara` | `LIARA_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/liara) |
|
| [Liara](https://liara.ir) | `liara` | `LIARA_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/liara) |
|
||||||
| [Lightsail](https://aws.amazon.com/lightsail/) | `lightsail` | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `DNS_ZONE` | [Additional configuration](https://go-acme.github.io/lego/dns/lightsail) |
|
| [Lightsail](https://aws.amazon.com/lightsail/) | `lightsail` | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `DNS_ZONE` | [Additional configuration](https://go-acme.github.io/lego/dns/lightsail) |
|
||||||
| [Lima-City](https://www.lima-city.de) | `limacity` | `LIMACITY_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/limacity) |
|
| [Lima-City](https://www.lima-city.de) | `limacity` | `LIMACITY_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/limacity) |
|
||||||
@@ -445,6 +452,7 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
|||||||
| [Njalla](https://njal.la) | `njalla` | `NJALLA_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/njalla) |
|
| [Njalla](https://njal.la) | `njalla` | `NJALLA_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/njalla) |
|
||||||
| [Nodion](https://www.nodion.com) | `nodion` | `NODION_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/nodion) |
|
| [Nodion](https://www.nodion.com) | `nodion` | `NODION_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/nodion) |
|
||||||
| [NS1](https://ns1.com/) | `ns1` | `NS1_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/ns1) |
|
| [NS1](https://ns1.com/) | `ns1` | `NS1_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/ns1) |
|
||||||
|
| [Octenium](https://octenium.com/) | `octenium` | `OCTENIUM_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/octenium) |
|
||||||
| [Open Telekom Cloud](https://cloud.telekom.de) | `otc` | `OTC_DOMAIN_NAME`, `OTC_USER_NAME`, `OTC_PASSWORD`, `OTC_PROJECT_NAME`, `OTC_IDENTITY_ENDPOINT` | [Additional configuration](https://go-acme.github.io/lego/dns/otc) |
|
| [Open Telekom Cloud](https://cloud.telekom.de) | `otc` | `OTC_DOMAIN_NAME`, `OTC_USER_NAME`, `OTC_PASSWORD`, `OTC_PROJECT_NAME`, `OTC_IDENTITY_ENDPOINT` | [Additional configuration](https://go-acme.github.io/lego/dns/otc) |
|
||||||
| [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) |
|
||||||
@@ -460,6 +468,7 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
|||||||
| [RFC2136](https://tools.ietf.org/html/rfc2136) | `rfc2136` | `RFC2136_TSIG_KEY`, `RFC2136_TSIG_SECRET`, `RFC2136_TSIG_ALGORITHM`, `RFC2136_NAMESERVER` | [Additional configuration](https://go-acme.github.io/lego/dns/rfc2136) |
|
| [RFC2136](https://tools.ietf.org/html/rfc2136) | `rfc2136` | `RFC2136_TSIG_KEY`, `RFC2136_TSIG_SECRET`, `RFC2136_TSIG_ALGORITHM`, `RFC2136_NAMESERVER` | [Additional configuration](https://go-acme.github.io/lego/dns/rfc2136) |
|
||||||
| [RimuHosting](https://rimuhosting.com) | `rimuhosting` | `RIMUHOSTING_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/rimuhosting) |
|
| [RimuHosting](https://rimuhosting.com) | `rimuhosting` | `RIMUHOSTING_API_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/rimuhosting) |
|
||||||
| [Route 53](https://aws.amazon.com/route53/) | `route53` | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `[AWS_REGION]`, `[AWS_HOSTED_ZONE_ID]` or a configured user/instance IAM profile. | [Additional configuration](https://go-acme.github.io/lego/dns/route53) |
|
| [Route 53](https://aws.amazon.com/route53/) | `route53` | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `[AWS_REGION]`, `[AWS_HOSTED_ZONE_ID]` or a configured user/instance IAM profile. | [Additional configuration](https://go-acme.github.io/lego/dns/route53) |
|
||||||
|
| [RU Center](https://nic.ru/) | `nicru` | `NICRU_USER`, `NICRU_PASSWORD`, `NICRU_SERVICE_ID`, `NICRU_SECRET`, `NICRU_SERVICE_NAME` | [Additional configuration](https://go-acme.github.io/lego/dns/nicru) |
|
||||||
| [Sakura Cloud](https://cloud.sakura.ad.jp/) | `sakuracloud` | `SAKURACLOUD_ACCESS_TOKEN`, `SAKURACLOUD_ACCESS_TOKEN_SECRET` | [Additional configuration](https://go-acme.github.io/lego/dns/sakuracloud) |
|
| [Sakura Cloud](https://cloud.sakura.ad.jp/) | `sakuracloud` | `SAKURACLOUD_ACCESS_TOKEN`, `SAKURACLOUD_ACCESS_TOKEN_SECRET` | [Additional configuration](https://go-acme.github.io/lego/dns/sakuracloud) |
|
||||||
| [Scaleway](https://www.scaleway.com) | `scaleway` | `SCW_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/scaleway) |
|
| [Scaleway](https://www.scaleway.com) | `scaleway` | `SCW_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/scaleway) |
|
||||||
| [Selectel v2](https://selectel.ru/en/) | `selectelv2` | `SELECTELV2_ACCOUNT_ID`, `SELECTELV2_PASSWORD`, `SELECTELV2_PROJECT_ID`, `SELECTELV2_USERNAME` | [Additional configuration](https://go-acme.github.io/lego/dns/selectelv2) |
|
| [Selectel v2](https://selectel.ru/en/) | `selectelv2` | `SELECTELV2_ACCOUNT_ID`, `SELECTELV2_PASSWORD`, `SELECTELV2_PROJECT_ID`, `SELECTELV2_USERNAME` | [Additional configuration](https://go-acme.github.io/lego/dns/selectelv2) |
|
||||||
@@ -473,6 +482,7 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
|||||||
| [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) |
|
||||||
| [Technitium](https://technitium.com) | `technitium` | `TECHNITIUM_SERVER_BASE_URL`, `TECHNITIUM_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/technitium) |
|
| [Technitium](https://technitium.com) | `technitium` | `TECHNITIUM_SERVER_BASE_URL`, `TECHNITIUM_API_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/technitium) |
|
||||||
| [Tencent Cloud DNS](https://cloud.tencent.com/product/cns) | `tencentcloud` | `TENCENTCLOUD_SECRET_ID`, `TENCENTCLOUD_SECRET_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/tencentcloud) |
|
| [Tencent Cloud DNS](https://cloud.tencent.com/product/cns) | `tencentcloud` | `TENCENTCLOUD_SECRET_ID`, `TENCENTCLOUD_SECRET_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/tencentcloud) |
|
||||||
|
| [Tencent EdgeOne](https://edgeone.ai/) | `edgeone` | `EDGEONE_SECRET_ID`, `EDGEONE_SECRET_KEY` | [Additional configuration](https://go-acme.github.io/lego/dns/edgeone) |
|
||||||
| [Timeweb Cloud](https://timeweb.cloud) | `timewebcloud` | `TIMEWEBCLOUD_AUTH_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/timewebcloud) |
|
| [Timeweb Cloud](https://timeweb.cloud) | `timewebcloud` | `TIMEWEBCLOUD_AUTH_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/timewebcloud) |
|
||||||
| [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) |
|
||||||
| [UKFast SafeDNS](https://docs.ukfast.co.uk/domains/safedns/index.html) | `safedns` | `SAFEDNS_AUTH_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/safedns) |
|
| [UKFast SafeDNS](https://docs.ukfast.co.uk/domains/safedns/index.html) | `safedns` | `SAFEDNS_AUTH_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/safedns) |
|
||||||
@@ -494,6 +504,7 @@ For complete details, refer to your provider's _Additional configuration_ link.
|
|||||||
| [Yandex Cloud](https://cloud.yandex.com/en/) | `yandexcloud` | `YANDEX_CLOUD_FOLDER_ID`, `YANDEX_CLOUD_IAM_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/yandexcloud) |
|
| [Yandex Cloud](https://cloud.yandex.com/en/) | `yandexcloud` | `YANDEX_CLOUD_FOLDER_ID`, `YANDEX_CLOUD_IAM_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/yandexcloud) |
|
||||||
| [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) |
|
||||||
|
| [ZoneEdit](https://www.zoneedit.com) | `zoneedit` | `ZONEEDIT_USER`, `ZONEEDIT_AUTH_TOKEN` | [Additional configuration](https://go-acme.github.io/lego/dns/zoneedit) |
|
||||||
| [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) |
|
||||||
| External Program | `exec` | `EXEC_PATH` | [Additional configuration](https://go-acme.github.io/lego/dns/exec) |
|
| External Program | `exec` | `EXEC_PATH` | [Additional configuration](https://go-acme.github.io/lego/dns/exec) |
|
||||||
| 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) |
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ The TLS options allow one to configure some parameters of the TLS connection.
|
|||||||
|
|
||||||
!!! important "TLSOption in Kubernetes"
|
!!! important "TLSOption in Kubernetes"
|
||||||
|
|
||||||
When using the [TLSOption resource](../../routing/providers/kubernetes-crd#kind-tlsoption) in Kubernetes, one might setup a default set of options that,
|
When using the [TLSOption resource](../routing/providers/kubernetes-crd.md#kind-tlsoption) in Kubernetes, one might setup a default set of options that,
|
||||||
if not explicitly overwritten, should apply to all ingresses.
|
if not explicitly overwritten, should apply to all ingresses.
|
||||||
To achieve that, you'll have to create a TLSOption resource with the name `default`.
|
To achieve that, you'll have to create a TLSOption resource with the name `default`.
|
||||||
There may exist only one TLSOption with the name `default` (across all namespaces) - otherwise they will be dropped.
|
There may exist only one TLSOption with the name `default` (across all namespaces) - otherwise they will be dropped.
|
||||||
@@ -503,7 +503,7 @@ Traefik supports mutual authentication, through the `clientAuth` section.
|
|||||||
|
|
||||||
For authentication policies that require verification of the client certificate, the certificate authority for the certificates should be set in `clientAuth.caFiles`.
|
For authentication policies that require verification of the client certificate, the certificate authority for the certificates should be set in `clientAuth.caFiles`.
|
||||||
|
|
||||||
In Kubernetes environment, CA certificate can be set in `clientAuth.secretNames`. See [TLSOption resource](../../routing/providers/kubernetes-crd#kind-tlsoption) for more details.
|
In Kubernetes environment, CA certificate can be set in `clientAuth.secretNames`. See [TLSOption resource](../routing/providers/kubernetes-crd.md#kind-tlsoption) for more details.
|
||||||
|
|
||||||
The `clientAuth.clientAuthType` option governs the behaviour as follows:
|
The `clientAuth.clientAuthType` option governs the behaviour as follows:
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Traefik is an [open-source](https://github.com/traefik/traefik) Application Prox
|
|||||||
|
|
||||||
If you start with Traefik for service discovery and routing, you can seamlessly add [API management](https://traefik.io/solutions/api-management/), [API gateway](https://traefik.io/solutions/api-gateway/), [AI gateway](https://traefik.io/solutions/ai-gateway/), and [API mocking](https://traefik.io/solutions/api-mocking/) capabilities as needed.
|
If you start with Traefik for service discovery and routing, you can seamlessly add [API management](https://traefik.io/solutions/api-management/), [API gateway](https://traefik.io/solutions/api-gateway/), [AI gateway](https://traefik.io/solutions/ai-gateway/), and [API mocking](https://traefik.io/solutions/api-mocking/) capabilities as needed.
|
||||||
|
|
||||||
With 3.3 billion downloads and over 55k stars on GitHub, Traefik is used globally across hybrid cloud, multi-cloud, on prem, and bare metal environments running Kuberentes, Docker Swarm, AWS, [the list goes on](https://doc.traefik.io/traefik/reference/install-configuration/providers/overview/).
|
With 3.3 billion downloads and over 55k stars on GitHub, Traefik is used globally across hybrid cloud, multi-cloud, on prem, and bare metal environments running Kubernetes, Docker Swarm, AWS, [the list goes on](https://doc.traefik.io/traefik/reference/install-configuration/providers/overview/).
|
||||||
|
|
||||||
Here’s how it works—Traefik receives requests on behalf of your system, identifies which components are responsible for handling them, and routes them securely. It automatically discovers the right configuration for your services by inspecting your infrastructure to identify relevant information and which service serves which request.
|
Here’s how it works—Traefik receives requests on behalf of your system, identifies which components are responsible for handling them, and routes them securely. It automatically discovers the right configuration for your services by inspecting your infrastructure to identify relevant information and which service serves which request.
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ Traefik supports different needs depending on your background. We keep three use
|
|||||||
Traefik’s main concepts help you understand how requests flow to your services:
|
Traefik’s main concepts help you understand how requests flow to your services:
|
||||||
|
|
||||||
- [Entrypoints](./reference/install-configuration/entrypoints.md) are the network entry points into Traefik. They define the port that will receive the packets and whether to listen for TCP or UDP.
|
- [Entrypoints](./reference/install-configuration/entrypoints.md) are the network entry points into Traefik. They define the port that will receive the packets and whether to listen for TCP or UDP.
|
||||||
- [Routers](./reference/routing-configuration/http/router/rules-and-priority.md) are in charge of connecting incoming requests to the services that can handle them. In the process, routers may use pieces of [middleware](./reference/routing-configuration/http/middlewares/overview.md) to update the request or act before forwarding the request to the service.
|
- [Routers](./reference/routing-configuration/http/routing/rules-and-priority.md) are in charge of connecting incoming requests to the services that can handle them. In the process, routers may use pieces of [middleware](./reference/routing-configuration/http/middlewares/overview.md) to update the request or act before forwarding the request to the service.
|
||||||
- [Services](./reference/routing-configuration/http/load-balancing/service.md) are responsible for configuring how to reach the actual services that will eventually handle the incoming requests.
|
- [Services](./reference/routing-configuration/http/load-balancing/service.md) are responsible for configuring how to reach the actual services that will eventually handle the incoming requests.
|
||||||
- [Providers](./reference/install-configuration/providers/overview.md) are infrastructure components, whether orchestrators, container engines, cloud providers, or key-value stores. The idea is that Traefik queries the provider APIs in order to find relevant information about routing, and when Traefik detects a change, it dynamically updates the routes.
|
- [Providers](./reference/install-configuration/providers/overview.md) are infrastructure components, whether orchestrators, container engines, cloud providers, or key-value stores. The idea is that Traefik queries the provider APIs in order to find relevant information about routing, and when Traefik detects a change, it dynamically updates the routes.
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "Learn how to implement the HTTP AddPrefix middleware in Traefik Pr
|
|||||||
Prefixing the Path
|
Prefixing the Path
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The AddPrefix middleware updates the path of a request before forwarding it.
|
The AddPrefix middleware updates the path of a request before forwarding it.
|
||||||
|
|
||||||
## Configuration Examples
|
## Configuration Examples
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "The HTTP basic authentication (BasicAuth) middleware in Traefik Pr
|
|||||||
Adding Basic Authentication
|
Adding Basic Authentication
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The BasicAuth middleware grants access to services to authorized users only.
|
The BasicAuth middleware grants access to services to authorized users only.
|
||||||
|
|
||||||
## Configuration Examples
|
## Configuration Examples
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "The HTTP buffering middleware in Traefik Proxy limits the size of
|
|||||||
How to Read the Request before Forwarding It
|
How to Read the Request before Forwarding It
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The Buffering middleware limits the size of requests that can be forwarded to services.
|
The Buffering middleware limits the size of requests that can be forwarded to services.
|
||||||
|
|
||||||
With Buffering, Traefik reads the entire request into memory (possibly buffering large requests into disk), and rejects requests that are over a specified size limit.
|
With Buffering, Traefik reads the entire request into memory (possibly buffering large requests into disk), and rejects requests that are over a specified size limit.
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "The HTTP chain middleware lets you define reusable combinations of
|
|||||||
When One Isn't Enough
|
When One Isn't Enough
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The Chain middleware enables you to define reusable combinations of other pieces of middleware.
|
The Chain middleware enables you to define reusable combinations of other pieces of middleware.
|
||||||
It makes reusing the same groups easier.
|
It makes reusing the same groups easier.
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "The HTTP circuit breaker in Traefik Proxy prevents stacking reques
|
|||||||
Don't Waste Time Calling Unhealthy Services
|
Don't Waste Time Calling Unhealthy Services
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The circuit breaker protects your system from stacking requests to unhealthy services, resulting in cascading failures.
|
The circuit breaker protects your system from stacking requests to unhealthy services, resulting in cascading failures.
|
||||||
|
|
||||||
When your system is healthy, the circuit is closed (normal operations).
|
When your system is healthy, the circuit is closed (normal operations).
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "Traefik Proxy's HTTP middleware lets you compress responses before
|
|||||||
Compress Allows Compressing Responses before Sending them to the Client
|
Compress Allows Compressing Responses before Sending them to the Client
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The Compress middleware supports Gzip, Brotli and Zstandard compression.
|
The Compress middleware supports Gzip, Brotli and Zstandard compression.
|
||||||
The activation of compression, and the compression method choice rely (among other things) on the request's `Accept-Encoding` header.
|
The activation of compression, and the compression method choice rely (among other things) on the request's `Accept-Encoding` header.
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "Traefik Proxy's HTTP DigestAuth middleware restricts access to you
|
|||||||
Adding Digest Authentication
|
Adding Digest Authentication
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The DigestAuth middleware grants access to services to authorized users only.
|
The DigestAuth middleware grants access to services to authorized users only.
|
||||||
|
|
||||||
## Configuration Examples
|
## Configuration Examples
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "In Traefik Proxy, the Errors middleware returns custom pages accor
|
|||||||
It Has Never Been Easier to Say That Something Went Wrong
|
It Has Never Been Easier to Say That Something Went Wrong
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The Errors middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes.
|
The Errors middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes.
|
||||||
|
|
||||||
!!! important
|
!!! important
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "In Traefik Proxy, the HTTP ForwardAuth middleware delegates authen
|
|||||||
Using an External Service to Forward Authentication
|
Using an External Service to Forward Authentication
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The ForwardAuth middleware delegates authentication to an external service.
|
The ForwardAuth middleware delegates authentication to an external service.
|
||||||
If the service answers with a 2XX code, access is granted, and the original request is performed.
|
If the service answers with a 2XX code, access is granted, and the original request is performed.
|
||||||
Otherwise, the response from the authentication server is returned.
|
Otherwise, the response from the authentication server is returned.
|
||||||
@@ -60,11 +58,11 @@ The following request properties are provided to the forward-auth target endpoin
|
|||||||
|
|
||||||
| Property | Forward-Request Header |
|
| Property | Forward-Request Header |
|
||||||
|-------------------|------------------------|
|
|-------------------|------------------------|
|
||||||
| HTTP Method | X-Forwarded-Method |
|
| HTTP Method | `X-Forwarded-Method` |
|
||||||
| Protocol | X-Forwarded-Proto |
|
| Protocol | `X-Forwarded-Proto` |
|
||||||
| Host | X-Forwarded-Host |
|
| Host | `X-Forwarded-Host` |
|
||||||
| Request URI | X-Forwarded-Uri |
|
| Request URI | `X-Forwarded-Uri` |
|
||||||
| Source IP-Address | X-Forwarded-For |
|
| Source IP-Address | `X-Forwarded-For` |
|
||||||
|
|
||||||
## Configuration Options
|
## Configuration Options
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "In Traefik Proxy, the HTTP headers middleware manages the headers
|
|||||||
Managing Request/Response headers
|
Managing Request/Response headers
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
The Headers middleware manages the headers of requests and responses.
|
The Headers middleware manages the headers of requests and responses.
|
||||||
|
|
||||||
A set of forwarded headers are automatically added by default. See the [FAQ](../../getting-started/faq.md#what-are-the-forwarded-headers-when-proxying-http-requests) for more information.
|
A set of forwarded headers are automatically added by default. See the [FAQ](../../getting-started/faq.md#what-are-the-forwarded-headers-when-proxying-http-requests) for more information.
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "Traefik Proxy's HTTP middleware lets you limit the number of simul
|
|||||||
Limiting the Number of Simultaneous In-Flight Requests
|
Limiting the Number of Simultaneous In-Flight Requests
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
To proactively prevent services from being overwhelmed with high load, the number of allowed simultaneous in-flight requests can be limited.
|
To proactively prevent services from being overwhelmed with high load, the number of allowed simultaneous in-flight requests can be limited.
|
||||||
|
|
||||||
## Configuration Examples
|
## Configuration Examples
|
||||||
@@ -115,7 +113,7 @@ The `depth` option tells Traefik to use the `X-Forwarded-For` header and select
|
|||||||
If `ipStrategy.ipv6Subnet` is provided and the selected IP is IPv6, the IP is transformed into the first IP of the subnet it belongs to.
|
If `ipStrategy.ipv6Subnet` is provided and the selected IP is IPv6, the IP is transformed into the first IP of the subnet it belongs to.
|
||||||
See [ipStrategy.ipv6Subnet](#ipstrategyipv6subnet) for more details.
|
See [ipStrategy.ipv6Subnet](#ipstrategyipv6subnet) for more details.
|
||||||
|
|
||||||
!!! example "Example of Depth & X-Forwarded-For"
|
!!! example "Example of Depth & `X-Forwarded-For`"
|
||||||
|
|
||||||
If `depth` is set to 2, and the request `X-Forwarded-For` header is `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` then the "real" client IP is `"10.0.0.1"` (at depth 4) but the IP used as the criterion is `"12.0.0.1"` (`depth=2`).
|
If `depth` is set to 2, and the request `X-Forwarded-For` header is `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` then the "real" client IP is `"10.0.0.1"` (at depth 4) but the IP used as the criterion is `"12.0.0.1"` (`depth=2`).
|
||||||
|
|
||||||
@@ -169,7 +167,7 @@ http:
|
|||||||
|
|
||||||
!!! important "If `depth` is specified, `excludedIPs` is ignored."
|
!!! important "If `depth` is specified, `excludedIPs` is ignored."
|
||||||
|
|
||||||
!!! example "Example of ExcludedIPs & X-Forwarded-For"
|
!!! example "Example of ExcludedIPs & `X-Forwarded-For`"
|
||||||
|
|
||||||
| `X-Forwarded-For` | `excludedIPs` | clientIP |
|
| `X-Forwarded-For` | `excludedIPs` | clientIP |
|
||||||
|-----------------------------------------|-----------------------|--------------|
|
|-----------------------------------------|-----------------------|--------------|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ The `depth` option tells Traefik to use the `X-Forwarded-For` header and take th
|
|||||||
If `ipStrategy.ipv6Subnet` is provided and the selected IP is IPv6, the IP is transformed into the first IP of the subnet it belongs to.
|
If `ipStrategy.ipv6Subnet` is provided and the selected IP is IPv6, the IP is transformed into the first IP of the subnet it belongs to.
|
||||||
See [ipStrategy.ipv6Subnet](#ipstrategyipv6subnet) for more details.
|
See [ipStrategy.ipv6Subnet](#ipstrategyipv6subnet) for more details.
|
||||||
|
|
||||||
!!! example "Examples of Depth & X-Forwarded-For"
|
!!! example "Examples of Depth & `X-Forwarded-For`"
|
||||||
|
|
||||||
If `depth` is set to 2, and the request `X-Forwarded-For` header is `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` then the "real" client IP is `"10.0.0.1"` (at depth 4) but the IP used is `"12.0.0.1"` (`depth=2`).
|
If `depth` is set to 2, and the request `X-Forwarded-For` header is `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` then the "real" client IP is `"10.0.0.1"` (at depth 4) but the IP used is `"12.0.0.1"` (`depth=2`).
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@ http:
|
|||||||
|
|
||||||
!!! important "If `depth` is specified, `excludedIPs` is ignored."
|
!!! important "If `depth` is specified, `excludedIPs` is ignored."
|
||||||
|
|
||||||
!!! example "Example of ExcludedIPs & X-Forwarded-For"
|
!!! example "Example of ExcludedIPs & `X-Forwarded-For`"
|
||||||
|
|
||||||
| `X-Forwarded-For` | `excludedIPs` | clientIP |
|
| `X-Forwarded-For` | `excludedIPs` | clientIP |
|
||||||
|-----------------------------------------|-----------------------|--------------|
|
|-----------------------------------------|-----------------------|--------------|
|
||||||
@@ -264,3 +264,45 @@ http:
|
|||||||
[http.middlewares.test-ipallowlist.ipallowlist.sourceCriterion.ipStrategy]
|
[http.middlewares.test-ipallowlist.ipallowlist.sourceCriterion.ipStrategy]
|
||||||
ipv6Subnet = 64
|
ipv6Subnet = 64
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `rejectStatusCode`
|
||||||
|
|
||||||
|
The `rejectStatusCode` option sets HTTP status code for refused requests. If not set, the default is 403 (Forbidden).
|
||||||
|
|
||||||
|
```yaml tab="Docker & Swarm"
|
||||||
|
# Reject requests with a 404 rather than a 403
|
||||||
|
labels:
|
||||||
|
- "traefik.http.middlewares.test-ipallowlist.ipallowlist.rejectstatuscode=404"
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml tab="Kubernetes"
|
||||||
|
# Reject requests with a 404 rather than a 403
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
name: test-ipallowlist
|
||||||
|
spec:
|
||||||
|
ipAllowList:
|
||||||
|
rejectStatusCode: 404
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml tab="Consul Catalog"
|
||||||
|
# Reject requests with a 404 rather than a 403
|
||||||
|
- "traefik.http.middlewares.test-ipallowlist.ipallowlist.rejectstatuscode=404"
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml tab="File (YAML)"
|
||||||
|
# Reject requests with a 404 rather than a 403
|
||||||
|
http:
|
||||||
|
middlewares:
|
||||||
|
test-ipallowlist:
|
||||||
|
ipAllowList:
|
||||||
|
rejectStatusCode: 404
|
||||||
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
# Reject requests with a 404 rather than a 403
|
||||||
|
[http.middlewares]
|
||||||
|
[http.middlewares.test-ipallowlist.ipAllowList]
|
||||||
|
rejectStatusCode = 404
|
||||||
|
```
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "Learn how to use IPWhiteList in HTTP middleware for limiting clien
|
|||||||
Limiting Clients to Specific IPs
|
Limiting Clients to Specific IPs
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
IPWhiteList limits allowed requests based on the client IP.
|
IPWhiteList limits allowed requests based on the client IP.
|
||||||
|
|
||||||
!!! warning
|
!!! warning
|
||||||
@@ -84,7 +82,7 @@ The `depth` option tells Traefik to use the `X-Forwarded-For` header and take th
|
|||||||
If `ipStrategy.ipv6Subnet` is provided and the selected IP is IPv6, the IP is transformed into the first IP of the subnet it belongs to.
|
If `ipStrategy.ipv6Subnet` is provided and the selected IP is IPv6, the IP is transformed into the first IP of the subnet it belongs to.
|
||||||
See [ipStrategy.ipv6Subnet](#ipstrategyipv6subnet) for more details.
|
See [ipStrategy.ipv6Subnet](#ipstrategyipv6subnet) for more details.
|
||||||
|
|
||||||
!!! example "Examples of Depth & X-Forwarded-For"
|
!!! example "Examples of Depth & `X-Forwarded-For`"
|
||||||
|
|
||||||
If `depth` is set to 2, and the request `X-Forwarded-For` header is `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` then the "real" client IP is `"10.0.0.1"` (at depth 4) but the IP used for the whitelisting is `"12.0.0.1"` (`depth=2`).
|
If `depth` is set to 2, and the request `X-Forwarded-For` header is `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` then the "real" client IP is `"10.0.0.1"` (at depth 4) but the IP used for the whitelisting is `"12.0.0.1"` (`depth=2`).
|
||||||
|
|
||||||
@@ -150,7 +148,7 @@ http:
|
|||||||
|
|
||||||
!!! important "If `depth` is specified, `excludedIPs` is ignored."
|
!!! important "If `depth` is specified, `excludedIPs` is ignored."
|
||||||
|
|
||||||
!!! example "Example of ExcludedIPs & X-Forwarded-For"
|
!!! example "Example of ExcludedIPs & `X-Forwarded-For`"
|
||||||
|
|
||||||
| `X-Forwarded-For` | `excludedIPs` | clientIP |
|
| `X-Forwarded-For` | `excludedIPs` | clientIP |
|
||||||
|-----------------------------------------|-----------------------|--------------|
|
|-----------------------------------------|-----------------------|--------------|
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "Read the official Traefik Proxy documentation for an overview of t
|
|||||||
Controlling connections
|
Controlling connections
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Configuration Example
|
## Configuration Example
|
||||||
|
|
||||||
```yaml tab="Docker & Swarm"
|
```yaml tab="Docker & Swarm"
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ The `depth` option tells Traefik to use the `X-Forwarded-For` header and select
|
|||||||
If `ipStrategy.ipv6Subnet` is provided and the selected IP is IPv6, the IP is transformed into the first IP of the subnet it belongs to.
|
If `ipStrategy.ipv6Subnet` is provided and the selected IP is IPv6, the IP is transformed into the first IP of the subnet it belongs to.
|
||||||
See [ipStrategy.ipv6Subnet](#ipstrategyipv6subnet) for more details.
|
See [ipStrategy.ipv6Subnet](#ipstrategyipv6subnet) for more details.
|
||||||
|
|
||||||
!!! example "Example of Depth & X-Forwarded-For"
|
!!! example "Example of Depth & `X-Forwarded-For`"
|
||||||
|
|
||||||
If `depth` is set to 2, and the request `X-Forwarded-For` header is `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` then the "real" client IP is `"10.0.0.1"` (at depth 4) but the IP used as the criterion is `"12.0.0.1"` (`depth=2`).
|
If `depth` is set to 2, and the request `X-Forwarded-For` header is `"10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1"` then the "real" client IP is `"10.0.0.1"` (at depth 4) but the IP used as the criterion is `"12.0.0.1"` (`depth=2`).
|
||||||
|
|
||||||
@@ -288,7 +288,7 @@ http:
|
|||||||
|
|
||||||
!!! example "Each IP as a distinct source"
|
!!! example "Each IP as a distinct source"
|
||||||
|
|
||||||
| X-Forwarded-For | excludedIPs | clientIP |
|
| `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.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"` |
|
| `"10.0.0.2,11.0.0.1,12.0.0.1"` | `"11.0.0.1,12.0.0.1"` | `"10.0.0.2"` |
|
||||||
@@ -298,7 +298,7 @@ http:
|
|||||||
|
|
||||||
!!! example "Group IPs together as same source"
|
!!! example "Group IPs together as same source"
|
||||||
|
|
||||||
| X-Forwarded-For | excludedIPs | clientIP |
|
| `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.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.2,11.0.0.1,12.0.0.1"` | `"12.0.0.1"` | `"11.0.0.1"` |
|
||||||
@@ -310,7 +310,7 @@ and the first IP that is _not_ in the pool (if any) is returned.
|
|||||||
|
|
||||||
!!! example "Matching for clientIP"
|
!!! example "Matching for clientIP"
|
||||||
|
|
||||||
| X-Forwarded-For | excludedIPs | 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"` | `"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,13.0.0.1"` | `"15.0.0.1,16.0.0.1"` | `"13.0.0.1"` |
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ The RedirectScheme middleware redirects the request if the request scheme is dif
|
|||||||
When there is at least one other reverse-proxy between the client and Traefik,
|
When there is at least one other reverse-proxy between the client and Traefik,
|
||||||
the other reverse-proxy (i.e. the last hop) needs to be a [trusted](../../routing/entrypoints.md#forwarded-headers) one.
|
the other reverse-proxy (i.e. the last hop) needs to be a [trusted](../../routing/entrypoints.md#forwarded-headers) one.
|
||||||
|
|
||||||
Otherwise, Traefik would clean up the X-Forwarded headers coming from this last hop,
|
Otherwise, Traefik would clean up the `X-Forwarded` headers coming from this last hop,
|
||||||
and as the RedirectScheme middleware relies on them to determine the scheme used,
|
and as the RedirectScheme middleware relies on them to determine the scheme used,
|
||||||
it would not function as intended.
|
it would not function as intended.
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "There are several available middleware in Traefik Proxy used to mo
|
|||||||
Tweaking the Request
|
Tweaking the Request
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Attached to the routers, pieces of middleware are a means of tweaking the requests before they are sent to your [service](../routing/services/index.md) (or before the answer from the services are sent to the clients).
|
Attached to the routers, pieces of middleware are a means of tweaking the requests before they are sent to your [service](../routing/services/index.md) (or before the answer from the services are sent to the clients).
|
||||||
|
|
||||||
There are several available middleware in Traefik, some can modify the request, the headers, some are in charge of redirections, some add authentication, and so on.
|
There are several available middleware in Traefik, some can modify the request, the headers, some are in charge of redirections, some add authentication, and so on.
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ description: "Read the official Traefik Proxy documentation for an overview of t
|
|||||||
Controlling connections
|
Controlling connections
|
||||||
{: .subtitle }
|
{: .subtitle }
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Configuration Example
|
## Configuration Example
|
||||||
|
|
||||||
```yaml tab="Docker & Swarm"
|
```yaml tab="Docker & Swarm"
|
||||||
|
|||||||
24
docs/content/migrate/v1-to-v2.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
title: "Traefik V2 Migration Documentation"
|
||||||
|
description: "Migrate from Traefik Proxy v1 to v2 and update all the necessary configurations to take advantage of all the improvements. Read the technical documentation."
|
||||||
|
---
|
||||||
|
|
||||||
|
# Migration Guide: From v1 to v2
|
||||||
|
|
||||||
|
How to Migrate from Traefik v1 to Traefik v2.
|
||||||
|
{: .subtitle }
|
||||||
|
|
||||||
|
The version 2 of Traefik introduced a number of breaking changes,
|
||||||
|
which require one to update their configuration when they migrate from v1 to v2.
|
||||||
|
|
||||||
|
For more information about the changes in Traefik v2, please refer to the [v2 documentation](https://doc.traefik.io/traefik/v2.11/migration/v1-to-v2/).
|
||||||
|
|
||||||
|
!!! info "Migration Helper"
|
||||||
|
|
||||||
|
We created a tool to help during the migration: [traefik-migration-tool](https://github.com/traefik/traefik-migration-tool)
|
||||||
|
|
||||||
|
This tool allows to:
|
||||||
|
|
||||||
|
- convert `Ingress` to Traefik `IngressRoute` resources.
|
||||||
|
- convert `acme.json` file from v1 to v2 format.
|
||||||
|
- migrate the static configuration contained in the file `traefik.toml` to a Traefik v2 file.
|
||||||
@@ -5,7 +5,7 @@ description: "Configuration changes and their details to successfully migrate fr
|
|||||||
|
|
||||||
# Configuration Details for Migrating from Traefik v2 to v3
|
# Configuration Details for Migrating from Traefik v2 to v3
|
||||||
|
|
||||||
## Static Configuration Changes
|
## Install Configuration Changes
|
||||||
|
|
||||||
### SwarmMode
|
### SwarmMode
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ It is now unsupported and would prevent Traefik to start.
|
|||||||
##### Remediation
|
##### Remediation
|
||||||
|
|
||||||
The `http3` option should be removed from the static configuration experimental section.
|
The `http3` option should be removed from the static configuration experimental section.
|
||||||
To configure `http3`, please checkout the [entrypoint configuration documentation](../routing/entrypoints.md#http3_1).
|
To configure `http3`, please checkout the [entrypoint configuration documentation](../reference/install-configuration/entrypoints.md#http3).
|
||||||
|
|
||||||
### Consul provider
|
### Consul provider
|
||||||
|
|
||||||
@@ -619,7 +619,7 @@ Please take a look at the observability documentation for more information:
|
|||||||
In v3, the `ServiceURL` field is not an object anymore but a string representation.
|
In v3, the `ServiceURL` field is not an object anymore but a string representation.
|
||||||
An update may be required if you index access logs.
|
An update may be required if you index access logs.
|
||||||
|
|
||||||
## Dynamic Configuration Changes
|
## Routing Configuration Changes
|
||||||
|
|
||||||
### Router Rule Matchers
|
### Router Rule Matchers
|
||||||
|
|
||||||
@@ -730,7 +730,7 @@ In v3, we renamed the `IPWhiteList` middleware to `IPAllowList` without changing
|
|||||||
|
|
||||||
### TCP LoadBalancer `terminationDelay` option
|
### TCP LoadBalancer `terminationDelay` option
|
||||||
|
|
||||||
The TCP LoadBalancer `terminationDelay` option has been removed.
|
The TCP LoadBalancer `terminationDelay` option has been deprecated.
|
||||||
This option can now be configured directly on the `TCPServersTransport` level, please take a look at this [documentation](../routing/services/index.md#terminationdelay)
|
This option can now be configured directly on the `TCPServersTransport` level, please take a look at this [documentation](../routing/services/index.md#terminationdelay)
|
||||||
|
|
||||||
### Kubernetes CRDs API Group `traefik.containo.us`
|
### Kubernetes CRDs API Group `traefik.containo.us`
|
||||||
161
docs/content/migrate/v2-to-v3.md
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
---
|
||||||
|
title: "Traefik V3 Migration Documentation"
|
||||||
|
description: "Migrate from Traefik Proxy v2 to v3 and update all the necessary configurations to take advantage of all the improvements. Read the technical documentation."
|
||||||
|
---
|
||||||
|
|
||||||
|
# Migration Guide: From v2 to v3
|
||||||
|
|
||||||
|
How to Migrate from Traefik v2 to Traefik v3.
|
||||||
|
{: .subtitle }
|
||||||
|
|
||||||
|
!!! success "Streamlined Migration Process"
|
||||||
|
Traefik v3 introduces minimal breaking changes and maintains backward compatibility with v2 syntax in dynamic configuration, offering a gradual migration path.
|
||||||
|
|
||||||
|
With Traefik v3, we are introducing a streamlined transition process from v2. Minimal breaking changes have been made to specific options in the [static configuration](./v2-to-v3-details.md#install-configuration-changes "Link to install configuration changes"), and we are ensuring backward compatibility with v2 syntax in the [dynamic configuration](./v2-to-v3-details.md#routing-configuration-changes "Link to routing configuration changes"). This will offer a gradual path for adopting the v3 syntax, allowing users to progressively migrate their Kubernetes ingress resources, Docker labels, etc., to the new format.
|
||||||
|
|
||||||
|
## Migration Overview
|
||||||
|
|
||||||
|
The migration process consists of three progressive steps designed to minimize risk and ensure a smooth transition:
|
||||||
|
|
||||||
|
!!! abstract "Migration Steps"
|
||||||
|
**Step 1:** [Prepare configurations and test v3](#step-1-prepare-configurations-and-test-v3)
|
||||||
|
**Step 2:** [Migrate production instances to Traefik v3](#step-2-migrate-production-instances-to-traefik-v3)
|
||||||
|
**Step 3:** [Progressively migrate dynamic configuration](#step-3-progressively-migrate-dynamic-configuration)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 1: Prepare Configurations and Test v3
|
||||||
|
|
||||||
|
!!! info "Preparation Phase"
|
||||||
|
This step focuses on updating static configurations and enabling backward compatibility for a safe testing environment.
|
||||||
|
|
||||||
|
### Configuration Updates
|
||||||
|
|
||||||
|
**Review and Update Static Configuration**
|
||||||
|
|
||||||
|
Check the changes in [static configurations](./v2-to-v3-details.md#install-configuration-changes "Link to install configuration changes") and [operations](./v2-to-v3-details.md#operations-changes "Link to operations changes") brought by Traefik v3. Modify your configurations accordingly.
|
||||||
|
|
||||||
|
**Enable v2 Compatibility Mode**
|
||||||
|
|
||||||
|
Add the following configuration to maintain v2 syntax compatibility:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# static configuration
|
||||||
|
core:
|
||||||
|
defaultRuleSyntax: v2
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! note "Backward Compatibility"
|
||||||
|
This snippet in the static configuration makes the [v2 format](../migrate/v2-to-v3-details.md#configure-the-default-syntax-in-static-configuration "Link to configure default syntax in static config") the default rule matchers syntax.
|
||||||
|
|
||||||
|
### Testing Phase
|
||||||
|
|
||||||
|
**Start Your Test Environment**
|
||||||
|
|
||||||
|
1. Start Traefik v3 with the updated configuration
|
||||||
|
2. Monitor the startup logs for any errors
|
||||||
|
3. Test routing to your applications
|
||||||
|
|
||||||
|
**Validation Checklist**
|
||||||
|
|
||||||
|
- ✅ Traefik starts without error logs
|
||||||
|
- ✅ All routes are functioning correctly
|
||||||
|
- ✅ Applications are accessible through Traefik
|
||||||
|
|
||||||
|
!!! success "Ready for Next Step"
|
||||||
|
If you don't get any error logs while testing, you are good to go! Otherwise, follow the remaining migration options highlighted in the logs.
|
||||||
|
|
||||||
|
Once your Traefik test instances are starting and routing to your applications, proceed to the next step.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 2: Migrate Production Instances to Traefik v3
|
||||||
|
|
||||||
|
!!! warning "Production Migration"
|
||||||
|
This is the critical step where you migrate your production environment. Proper monitoring and rollback preparation are essential.
|
||||||
|
|
||||||
|
### Migration Strategy
|
||||||
|
|
||||||
|
**Progressive Deployment**
|
||||||
|
|
||||||
|
We strongly advise you to follow a progressive migration strategy ([Kubernetes rolling update mechanism](https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/ "Link to the Kubernetes rolling update documentation"), for example) to migrate your production instances to v3.
|
||||||
|
|
||||||
|
**Required Preparations**
|
||||||
|
|
||||||
|
!!! danger "Critical Requirements"
|
||||||
|
- ✅ **Real-time monitoring solution** for ingress traffic ([monitoring guide](https://traefik.io/blog/capture-traefik-metrics-for-apps-on-kubernetes-with-prometheus/ "Link to the blog on capturing Traefik metrics with Prometheus"))
|
||||||
|
- ✅ **Rollback plan** ready for immediate execution
|
||||||
|
- ✅ **Team availability** during migration window
|
||||||
|
|
||||||
|
### Migration Execution
|
||||||
|
|
||||||
|
**During Migration:**
|
||||||
|
|
||||||
|
1. **Monitor continuously:** Watch ingress traffic for any errors or anomalies
|
||||||
|
2. **Be prepared to rollback:** Have your rollback procedure ready to execute immediately
|
||||||
|
3. **Use debug logs:** Leverage debug and access logs to understand any issues that arise
|
||||||
|
|
||||||
|
**Validation Steps:**
|
||||||
|
|
||||||
|
- Monitor response times and error rates
|
||||||
|
- Verify all critical application paths are working
|
||||||
|
- Check that SSL/TLS termination is functioning correctly
|
||||||
|
- Validate middleware behavior
|
||||||
|
|
||||||
|
!!! success "Migration Complete"
|
||||||
|
Once every Traefik instance is updated, you will be on Traefik v3!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 3: Progressively Migrate Dynamic Configuration
|
||||||
|
|
||||||
|
!!! info "Optional Immediate Step"
|
||||||
|
This step can be done later in the process, as Traefik v3 is compatible with the v2 format for [dynamic configuration](./v2-to-v3-details.md#routing-configuration-changes "Link to routing configuration changes"). Enable Traefik logs to get some help if any deprecated option is in use.
|
||||||
|
|
||||||
|
### Migration Process
|
||||||
|
|
||||||
|
**Review Dynamic Configuration Changes**
|
||||||
|
|
||||||
|
Check the changes in [dynamic configuration](./v2-to-v3-details.md#routing-configuration-changes "Link to routing configuration changes") to understand what updates are needed.
|
||||||
|
|
||||||
|
**Progressive Router Migration**
|
||||||
|
|
||||||
|
1. **Select a router** to migrate first (start with non-critical services)
|
||||||
|
2. **[Switch to v3 syntax](./v2-to-v3-details.md#configure-the-syntax-per-router "Link to configuring the syntax per router")** for that specific router
|
||||||
|
3. **Test thoroughly** to ensure ingress traffic is not impacted
|
||||||
|
4. **Deploy and validate** the updated resource
|
||||||
|
5. **Remove the old v2 resource** once validation is complete
|
||||||
|
6. **Repeat** for each remaining router
|
||||||
|
|
||||||
|
### Migration Best Practices
|
||||||
|
|
||||||
|
!!! tip "Migration Strategy"
|
||||||
|
- Start with development or staging environments
|
||||||
|
- Migrate one service at a time
|
||||||
|
- Test each migration thoroughly before proceeding
|
||||||
|
- Keep detailed logs of what was changed
|
||||||
|
|
||||||
|
### Final Configuration Cleanup
|
||||||
|
|
||||||
|
Once all Ingress resources are migrated to v3 syntax, remove the compatibility configuration:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Remove this from static configuration
|
||||||
|
core:
|
||||||
|
defaultRuleSyntax: v2 # ← Delete this entire section
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! success "🎉 Migration Complete!"
|
||||||
|
You are now fully migrated to Traefik v3 and can take advantage of all the new features and improvements!
|
||||||
|
|
||||||
|
### Post-Migration Verification
|
||||||
|
|
||||||
|
**Final Checklist:**
|
||||||
|
|
||||||
|
- ✅ All routers use v3 syntax
|
||||||
|
- ✅ v2 compatibility mode disabled
|
||||||
|
- ✅ No deprecated warnings in logs
|
||||||
|
- ✅ All applications functioning correctly
|
||||||
|
- ✅ Performance metrics stable
|
||||||
|
|
||||||
|
{!traefik-for-business-applications.md!}
|
||||||
11
docs/content/migrate/v2.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
title: "Traefik V2 Migration Documentation"
|
||||||
|
description: "Learn the steps needed to migrate to new Traefik Proxy v2 versions, i.e. v2.0 to v2.1 or v2.1 to v2.2. Read the technical documentation."
|
||||||
|
---
|
||||||
|
|
||||||
|
# Migration: Steps needed between the v2 versions
|
||||||
|
|
||||||
|
The multiple minor versions of Traefik v2 introduced a number of changes,
|
||||||
|
which may require one to update their configuration when they migrate.
|
||||||
|
|
||||||
|
For more information about the changes between Traefik v2 minor versions, please refer to the [v2 documentation](https://doc.traefik.io/traefik/v2.11/migration/v2/).
|
||||||
498
docs/content/migrate/v3.md
Normal file
@@ -0,0 +1,498 @@
|
|||||||
|
---
|
||||||
|
title: "Traefik Migration Documentation"
|
||||||
|
description: "Learn the steps needed to migrate to new Traefik Proxy v3 versions. Read the technical documentation."
|
||||||
|
---
|
||||||
|
|
||||||
|
# Migration: Steps needed between the versions
|
||||||
|
|
||||||
|
This guide provides detailed migration steps for upgrading between different Traefik v3 versions. Each section covers breaking changes, deprecations, and configuration updates required for a smooth transition.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.0 to v3.1
|
||||||
|
|
||||||
|
### Kubernetes Provider RBACs
|
||||||
|
|
||||||
|
Starting with v3.1, Traefik's Kubernetes Providers use the [EndpointSlices API](https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/) (requires Kubernetes >=v1.21) for service endpoint discovery. This change also introduces NodePort load-balancing capabilities.
|
||||||
|
|
||||||
|
The following RBAC updates are required for all Kubernetes providers:
|
||||||
|
|
||||||
|
- Remove endpoints permissions and add endpointslices:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Remove this section from your RBAC
|
||||||
|
# - apiGroups: [""]
|
||||||
|
# resources: ["endpoints"]
|
||||||
|
# verbs: ["get", "list", "watch"]
|
||||||
|
|
||||||
|
# Add this section instead
|
||||||
|
- apiGroups:
|
||||||
|
- discovery.k8s.io
|
||||||
|
resources:
|
||||||
|
- endpointslices
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
```
|
||||||
|
|
||||||
|
- Add nodes permissions for NodePort support:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- nodes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! note "Affected Providers"
|
||||||
|
These changes apply to:
|
||||||
|
|
||||||
|
- [KubernetesIngress](../routing/providers/kubernetes-ingress.md#configuration-example) provider
|
||||||
|
- [KubernetesCRD](../reference/dynamic-configuration/kubernetes-crd.md#rbac) provider
|
||||||
|
- [KubernetesGateway](../reference/dynamic-configuration/kubernetes-gateway-rbac.yml) provider
|
||||||
|
|
||||||
|
#### Gateway API: KubernetesGateway Provider
|
||||||
|
|
||||||
|
The KubernetesGateway Provider is no longer experimental in v3.1 and can be enabled without the `experimental.kubernetesgateway` option.
|
||||||
|
|
||||||
|
**Deprecated Configuration:**
|
||||||
|
|
||||||
|
??? example "Experimental kubernetesgateway option (deprecated)"
|
||||||
|
|
||||||
|
```yaml tab="File (YAML)"
|
||||||
|
experimental:
|
||||||
|
kubernetesgateway: true
|
||||||
|
```
|
||||||
|
|
||||||
|
```toml tab="File (TOML)"
|
||||||
|
[experimental]
|
||||||
|
kubernetesgateway=true
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash tab="CLI"
|
||||||
|
--experimental.kubernetesgateway=true
|
||||||
|
```
|
||||||
|
|
||||||
|
**Migration Steps:**
|
||||||
|
|
||||||
|
1. Remove the `kubernetesgateway` option from the experimental section
|
||||||
|
2. Configure the provider using the [KubernetesGateway Provider documentation](../providers/kubernetes-gateway.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.1.0 to v3.1.1
|
||||||
|
|
||||||
|
### IngressClass Lookup
|
||||||
|
|
||||||
|
The `disableIngressClassLookup` option has been deprecated and will be removed in the next major version.
|
||||||
|
|
||||||
|
**Migration Required:**
|
||||||
|
|
||||||
|
- **Old:** `disableIngressClassLookup`
|
||||||
|
- **New:** `disableClusterScopeResources`
|
||||||
|
|
||||||
|
The new option provides broader control over cluster scope resources discovery, including both IngressClass and Nodes resources.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.1 to v3.2
|
||||||
|
|
||||||
|
### Kubernetes CRD Provider
|
||||||
|
|
||||||
|
New optional fields have been added to several CRDs. These updates are backward compatible and only add new functionality.
|
||||||
|
|
||||||
|
**Apply the latest CRDs:**
|
||||||
|
|
||||||
|
```shell
|
||||||
|
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.3/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
**Updated Resources:**
|
||||||
|
|
||||||
|
- [TraefikService](../routing/services/index.md#mirroring-service) ([PR #11032](https://github.com/traefik/traefik/pull/11032))
|
||||||
|
- [RateLimit](../middlewares/http/ratelimit.md) & [InFlightReq](../middlewares/http/inflightreq.md) middlewares ([PR #9747](https://github.com/traefik/traefik/pull/9747))
|
||||||
|
- [Compress](../middlewares/http/compress.md) middleware ([PR #10943](https://github.com/traefik/traefik/pull/10943))
|
||||||
|
|
||||||
|
### Kubernetes Gateway Provider Standard Channel
|
||||||
|
|
||||||
|
Starting with v3.2, the Kubernetes Gateway Provider now supports [GRPCRoute](https://gateway-api.sigs.k8s.io/api-types/grpcroute/) resources.
|
||||||
|
|
||||||
|
Therefore, in the corresponding RBACs (see [KubernetesGateway](../reference/dynamic-configuration/kubernetes-gateway-rbac.yml) provider RBACs),
|
||||||
|
the `grcroutes` and `grpcroutes/status` rights have to be added.
|
||||||
|
|
||||||
|
**Required RBAC Updates:**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
...
|
||||||
|
- apiGroups:
|
||||||
|
- gateway.networking.k8s.io
|
||||||
|
resources:
|
||||||
|
- grpcroutes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- gateway.networking.k8s.io
|
||||||
|
resources:
|
||||||
|
- grpcroutes/status
|
||||||
|
verbs:
|
||||||
|
- update
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
### Kubernetes Gateway Provider Experimental Channel
|
||||||
|
|
||||||
|
Due to breaking changes in Kubernetes Gateway [v1.2.0-rc1](https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.2.0-rc1), Traefik v3.3 only supports Kubernetes Gateway v1.2.x when experimental features are enabled.
|
||||||
|
|
||||||
|
**New Feature: BackendTLSPolicy Support**
|
||||||
|
|
||||||
|
The provider now supports [BackendTLSPolicy](https://gateway-api.sigs.k8s.io/api-types/backendtlspolicy/) resources.
|
||||||
|
|
||||||
|
Therefore, in the corresponding RBACs (see [KubernetesGateway](../reference/dynamic-configuration/kubernetes-gateway-rbac.yml) provider RBACs),
|
||||||
|
the `backendtlspolicies` and `backendtlspolicies/status` rights have to be added.
|
||||||
|
|
||||||
|
**Required RBAC Updates:**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
...
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- gateway.networking.k8s.io
|
||||||
|
resources:
|
||||||
|
- backendtlspolicies
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- gateway.networking.k8s.io
|
||||||
|
resources:
|
||||||
|
- backendtlspolicies/status
|
||||||
|
verbs:
|
||||||
|
- update
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.2.1
|
||||||
|
|
||||||
|
### `X-Forwarded-Prefix` Header Changes
|
||||||
|
|
||||||
|
In v3.2.1, the `X-Forwarded-Prefix` header is now handled like other `X-Forwarded-*` headers - Traefik removes it when sent from untrusted sources.
|
||||||
|
|
||||||
|
This change improves security by preventing header spoofing from untrusted clients. Refer to the [Forwarded headers documentation](../routing/entrypoints.md#forwarded-headers) for configuration details.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.2.2
|
||||||
|
|
||||||
|
### Swarm Provider Label Updates
|
||||||
|
|
||||||
|
In v3.2.2, Swarm-specific labels have been deprecated and will be removed in a future version.
|
||||||
|
|
||||||
|
**Migration Required:**
|
||||||
|
|
||||||
|
| Deprecated Label | New Label |
|
||||||
|
|------------------|-----------|
|
||||||
|
| `traefik.docker.network` | `traefik.swarm.network` |
|
||||||
|
| `traefik.docker.lbswarm` | `traefik.swarm.lbswarm` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.2 to v3.3
|
||||||
|
|
||||||
|
### ACME DNS Certificate Resolver
|
||||||
|
|
||||||
|
In v3.3, DNS challenge configuration options have been reorganized for better clarity.
|
||||||
|
|
||||||
|
**Migration Required:**
|
||||||
|
|
||||||
|
| Deprecated Option | New Option |
|
||||||
|
|-------------------|------------|
|
||||||
|
| `acme.dnsChallenge.delaybeforecheck` | `acme.dnsChallenge.propagation.delayBeforeChecks` |
|
||||||
|
| `acme.dnsChallenge.disablepropagationcheck` | `acme.dnsChallenge.propagation.disableChecks` |
|
||||||
|
|
||||||
|
### Tracing Global Attributes
|
||||||
|
|
||||||
|
In v3.3, the tracing configuration has been clarified to better reflect its purpose.
|
||||||
|
|
||||||
|
**Migration Required:**
|
||||||
|
|
||||||
|
- **Old:** `tracing.globalAttributes`
|
||||||
|
- **New:** `tracing.resourceAttributes`
|
||||||
|
|
||||||
|
The old option name was misleading as it specifically adds resource attributes for the collector, not global span attributes.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.3.4
|
||||||
|
|
||||||
|
### OpenTelemetry Request Duration Metric
|
||||||
|
|
||||||
|
In v3.3.4, the OpenTelemetry Request Duration metric unit has been standardized to match other providers and naming conventions.
|
||||||
|
|
||||||
|
**Change Details:**
|
||||||
|
|
||||||
|
- **Metric:** `traefik_(entrypoint|router|service)_request_duration_seconds`
|
||||||
|
- **Old Unit:** Milliseconds
|
||||||
|
- **New Unit:** Seconds
|
||||||
|
|
||||||
|
This change ensures consistency across all metrics providers and follows standard naming conventions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.3.5
|
||||||
|
|
||||||
|
### Compress Middleware Default Encodings
|
||||||
|
|
||||||
|
In v3.3.5, the default compression algorithms have been reordered to favor gzip compression.
|
||||||
|
|
||||||
|
**New Default:** `gzip, br, zstd`
|
||||||
|
|
||||||
|
This change affects requests that either:
|
||||||
|
|
||||||
|
- Don't specify preferred algorithms in the `Accept-Encoding` header
|
||||||
|
- Have no order preference in their `Accept-Encoding` header
|
||||||
|
|
||||||
|
The reordering helps ensure better compatibility with older clients that may not support newer compression algorithms.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.3.6
|
||||||
|
|
||||||
|
### Request Path Sanitization
|
||||||
|
|
||||||
|
Starting with v3.3.6, incoming request paths are now automatically cleaned before processing for security and consistency.
|
||||||
|
|
||||||
|
**What's Changed:**
|
||||||
|
|
||||||
|
The following path segments are now interpreted and collapsed:
|
||||||
|
|
||||||
|
- `/../` (parent directory references)
|
||||||
|
- `/./` (current directory references)
|
||||||
|
- Duplicate slash segments (`//`)
|
||||||
|
|
||||||
|
**Disabling Sanitization:**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# EntryPoint HTTP configuration
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: ":80"
|
||||||
|
http:
|
||||||
|
sanitizePath: false # Not recommended
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! danger "Security Warning"
|
||||||
|
Setting `sanitizePath: false` is not safe. This option should only be used with legacy clients that don't properly URL-encode data. Always ensure requests are properly URL-encoded instead of disabling this security feature.
|
||||||
|
|
||||||
|
**Example Risk:**
|
||||||
|
Base64 data containing "/" characters can lead to unsafe routing when path sanitization is disabled and the data isn't URL-encoded.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.3 to v3.4
|
||||||
|
|
||||||
|
### Kubernetes CRD Provider
|
||||||
|
|
||||||
|
#### Load-Balancing Strategy Updates
|
||||||
|
|
||||||
|
Starting with v3.4, HTTP service definitions now support additional load-balancing strategies for better traffic distribution.
|
||||||
|
|
||||||
|
**Apply Updated CRDs:**
|
||||||
|
|
||||||
|
```shell
|
||||||
|
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.4/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
**New Strategy Values:**
|
||||||
|
|
||||||
|
- `wrr` (Weighted Round Robin)
|
||||||
|
- `p2c` (Power of Two Choices)
|
||||||
|
|
||||||
|
!!! warning "Deprecation"
|
||||||
|
The `RoundRobin` strategy is deprecated but still supported (equivalent to `wrr`). It will be removed in the next major release.
|
||||||
|
|
||||||
|
Refer to the [HTTP Services Load Balancing documentation](../routing/services/index.md#load-balancing-strategy) for detailed information.
|
||||||
|
|
||||||
|
#### ServersTransport CA Certificate Configuration
|
||||||
|
|
||||||
|
A new `rootCAs` option has been added to the `ServersTransport` and `ServersTransportTCP` CRDs. It supports both ConfigMaps and Secrets for CA certificates and replaces the `rootCAsSecrets` option.
|
||||||
|
|
||||||
|
**Apply Updates:**
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Update CRDs
|
||||||
|
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.4/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
|
||||||
|
|
||||||
|
# Update RBACs
|
||||||
|
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.4/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
**New Configuration Format:**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: ServersTransport
|
||||||
|
metadata:
|
||||||
|
name: foo
|
||||||
|
namespace: bar
|
||||||
|
spec:
|
||||||
|
rootCAs:
|
||||||
|
- configMap: ca-config-map
|
||||||
|
- secret: ca-secret
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: traefik.io/v1alpha1
|
||||||
|
kind: ServersTransportTCP
|
||||||
|
metadata:
|
||||||
|
name: foo
|
||||||
|
namespace: bar
|
||||||
|
spec:
|
||||||
|
rootCAs:
|
||||||
|
- configMap: ca-config-map
|
||||||
|
- secret: ca-secret
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! warning "Deprecation"
|
||||||
|
The `rootCAsSecrets` option (Secrets only) is still supported but deprecated. It will be removed in the next major release.
|
||||||
|
|
||||||
|
### Rule Syntax Configuration
|
||||||
|
|
||||||
|
In v3.4, rule syntax configuration options will be removed in the next major version.
|
||||||
|
|
||||||
|
**Deprecated Options:**
|
||||||
|
|
||||||
|
- `core.defaultRuleSyntax` (static configuration)
|
||||||
|
- `ruleSyntax` (router option)
|
||||||
|
|
||||||
|
These options were transitional helpers for migrating from v2 to v3 syntax. Please ensure all router rules use v3 syntax before the next major release.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.4.1
|
||||||
|
|
||||||
|
### Request Path Normalization
|
||||||
|
|
||||||
|
Starting with v3.4.1, request paths are now normalized according to RFC 3986 standards for better consistency and security.
|
||||||
|
|
||||||
|
**Normalization Process:**
|
||||||
|
|
||||||
|
1. **Unreserved Character Decoding:** Characters like `%2E` (.) are decoded to their literal form
|
||||||
|
2. **Case Normalization:** Percent-encoded characters are uppercased (`%2e` becomes `%2E`)
|
||||||
|
|
||||||
|
This follows [RFC 3986 percent-encoding normalization](https://datatracker.ietf.org/doc/html/rfc3986#section-6.2.2.2) and [case normalization](https://datatracker.ietf.org/doc/html/rfc3986#section-6.2.2.1) standards.
|
||||||
|
|
||||||
|
**Processing Order:**
|
||||||
|
|
||||||
|
1. Path normalization (cannot be disabled)
|
||||||
|
2. Path sanitization (if enabled)
|
||||||
|
|
||||||
|
### Reserved Character Handling in Routing
|
||||||
|
|
||||||
|
Starting with v3.4.1, reserved characters (per [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986#section-2.2)) remain encoded during router rule matching to prevent routing ambiguity.
|
||||||
|
|
||||||
|
**Why This Matters:**
|
||||||
|
Reserved characters change the meaning of request paths when decoded. Keeping them encoded during routing prevents security vulnerabilities and ensures predictable routing behavior.
|
||||||
|
|
||||||
|
### Request Path Matching Examples
|
||||||
|
|
||||||
|
The following table illustrates how path matching behavior has changed:
|
||||||
|
|
||||||
|
| Request Path | Router Rule | Traefik v3.4.0 | Traefik v3.4.1 | Explanation |
|
||||||
|
|-------------------|------------------------------|----------------|----------------|-------------------------------------------------------|
|
||||||
|
| `/foo%2Fbar` | ```PathPrefix(`/foo/bar`)``` | Match | No match | `%2F` (/) stays encoded, preventing false matches |
|
||||||
|
| `/foo/../bar` | ```PathPrefix(`/foo`)``` | No match | No match | Path traversal is sanitized away |
|
||||||
|
| `/foo/../bar` | ```PathPrefix(`/bar`)``` | Match | Match | Resolves to `/bar` after sanitization |
|
||||||
|
| `/foo/%2E%2E/bar` | ```PathPrefix(`/foo`)``` | Match | No match | Encoded dots normalized then sanitized |
|
||||||
|
| `/foo/%2E%2E/bar` | ```PathPrefix(`/bar`)``` | No match | Match | Resolves to `/bar` after normalization + sanitization |
|
||||||
|
|
||||||
|
## v3.4.5
|
||||||
|
|
||||||
|
### MultiPath TCP
|
||||||
|
|
||||||
|
Since `v3.4.5`, the MultiPath TCP support introduced with `v3.4.2` has been removed.
|
||||||
|
It appears that enabling MPTCP on some platforms can cause Traefik to stop with the following error logs message:
|
||||||
|
|
||||||
|
- `set tcp X.X.X.X:X->X.X.X.X:X: setsockopt: operation not supported`
|
||||||
|
|
||||||
|
However, it can be re-enabled by setting the `multipathtcp` variable in the GODEBUG environment variable, see the related [go documentation](https://go.dev/doc/godebug#go-124).
|
||||||
|
|
||||||
|
## v3.5.0
|
||||||
|
|
||||||
|
### Observability
|
||||||
|
|
||||||
|
#### TraceVerbosity on Routers and Entrypoints
|
||||||
|
|
||||||
|
Starting with `v3.5.0`, a new `traceVerbosity` option is available for both entrypoints and routers.
|
||||||
|
This option allows you to control the level of detail for tracing spans.
|
||||||
|
Routers can override the value inherited from their entrypoint.
|
||||||
|
|
||||||
|
**Impact:**
|
||||||
|
|
||||||
|
- If you rely on tracing, review your configuration to explicitly set the desired verbosity level.
|
||||||
|
- Existing configurations will default to `minimal` unless overridden, which will result in fewer spans being generated than before.
|
||||||
|
|
||||||
|
Possible values are:
|
||||||
|
|
||||||
|
- `minimal`: produces a single server span and one client span for each request processed by a router.
|
||||||
|
- `detailed`: enables the creation of additional spans for each middleware executed for each request processed by a router.
|
||||||
|
|
||||||
|
See the updated documentation for [entrypoints](../reference/install-configuration/entrypoints.md) and [dynamic routers](../reference/routing-configuration/http/routing/observability.md#traceverbosity).
|
||||||
|
|
||||||
|
#### K8s Resource Attributes
|
||||||
|
|
||||||
|
Since `v3.5.0`, the semconv attributes `k8s.pod.name` and `k8s.pod.uid` are injected automatically in OTel resource attributes when OTel tracing/logs/metrics are enabled.
|
||||||
|
|
||||||
|
For that purpose, the following right has to be added to the Traefik Kubernetes RBACs:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
...
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v3.5.2
|
||||||
|
|
||||||
|
### Deprecation of ProxyProtocol option
|
||||||
|
|
||||||
|
Starting with `v3.5.2`, the `proxyProtocol` option for TCP LoadBalancer is deprecated.
|
||||||
|
This option can now be configured at the `TCPServersTransport` level, please check out the [documentation](../reference/routing-configuration/tcp/serverstransport.md) for more details.
|
||||||
|
|
||||||
|
#### Kubernetes CRD Provider
|
||||||
|
|
||||||
|
To use the new `proxyprotocol` option in the Kubernetes CRD provider, you need to update your CRDs.
|
||||||
|
|
||||||
|
**Apply Updated CRDs:**
|
||||||
|
|
||||||
|
```shell
|
||||||
|
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.5/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
## v3.5.4
|
||||||
|
|
||||||
|
### Certificate Metric Renamed with OpenTelemetry
|
||||||
|
|
||||||
|
Starting with `v3.5.4`, and when using OpenTelemetry, the `traefik_tls_certs_not_after_milliseconds` metric is renamed to `traefik_tls_certs_not_after_seconds`.
|
||||||
|
This change aligns the metric name with its real unit precision, which is in seconds.
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Traefik V3 Migration Documentation"
|
|
||||||
description: "Migrate from Traefik Proxy v2 to v3 and update all the necessary configurations to take advantage of all the improvements. Read the technical documentation."
|
|
||||||
---
|
|
||||||
|
|
||||||
# Migration Guide: From v2 to v3
|
|
||||||
|
|
||||||
How to Migrate from Traefik v2 to Traefik v3.
|
|
||||||
{: .subtitle }
|
|
||||||
|
|
||||||
With Traefik v3, we are introducing a streamlined transition process from v2. Minimal breaking changes have been made to specific options in the [static configuration](./v2-to-v3-details.md#static-configuration-changes "Link to static configuration changes"), and we are ensuring backward compatibility with v2 syntax in the [dynamic configuration](./v2-to-v3-details.md#dynamic-configuration-changes "Link to dynamic configuration changes"). This will offer a gradual path for adopting the v3 syntax, allowing users to progressively migrate their Kubernetes ingress resources, Docker labels, etc., to the new format.
|
|
||||||
|
|
||||||
Here are the steps to progressively migrate from Traefik v2 to v3:
|
|
||||||
|
|
||||||
1. [Prepare configurations and test v3](#step-1-prepare-configurations-and-test-v3)
|
|
||||||
1. [Migrate production instances to Traefik v3](#step-2-migrate-production-instances-to-traefik-v3)
|
|
||||||
1. [Progressively migrate dynamic configuration](#step-3-progressively-migrate-dynamic-configuration)
|
|
||||||
|
|
||||||
## Step 1: Prepare Configurations and Test v3
|
|
||||||
|
|
||||||
Check the changes in [static configurations](./v2-to-v3-details.md#static-configuration-changes "Link to static configuration changes") and [operations](./v2-to-v3-details.md#operations-changes "Link to operations changes") brought by Traefik v3.
|
|
||||||
Modify your configurations accordingly.
|
|
||||||
|
|
||||||
Then, add the following snippet to the static configuration:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# static configuration
|
|
||||||
core:
|
|
||||||
defaultRuleSyntax: v2
|
|
||||||
```
|
|
||||||
|
|
||||||
This snippet in the static configuration makes the [v2 format](../migration/v2-to-v3-details.md#configure-the-default-syntax-in-static-configuration "Link to configure default syntax in static config") the default rule matchers syntax.
|
|
||||||
|
|
||||||
Start Traefik v3 with this new configuration to test it.
|
|
||||||
|
|
||||||
If you don’t get any error logs while testing, you are good to go!
|
|
||||||
Otherwise, follow the remaining migration options highlighted in the logs.
|
|
||||||
|
|
||||||
Once your Traefik test instances are starting and routing to your applications, proceed to the next step.
|
|
||||||
|
|
||||||
## Step 2: Migrate Production Instances to Traefik v3
|
|
||||||
|
|
||||||
We strongly advise you to follow a progressive migration strategy ([Kubernetes rolling update mechanism](https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/ "Link to the Kubernetes rolling update documentation"), for example) to migrate your production instances to v3.
|
|
||||||
|
|
||||||
!!! Warning
|
|
||||||
Ensure you have a [real-time monitoring solution](https://traefik.io/blog/capture-traefik-metrics-for-apps-on-kubernetes-with-prometheus/ "Link to the blog on capturing Traefik metrics with Prometheus") for your ingress traffic to detect issues instantly.
|
|
||||||
|
|
||||||
During the progressive migration, monitor your ingress traffic for any errors. Be prepared to rollback to a working state in case of any issues.
|
|
||||||
|
|
||||||
If you encounter any issues, leverage debug and access logs provided by Traefik to understand what went wrong and how to fix it.
|
|
||||||
|
|
||||||
Once every Traefik instance is updated, you will be on Traefik v3!
|
|
||||||
|
|
||||||
## Step 3: Progressively Migrate Dynamic Configuration
|
|
||||||
|
|
||||||
!!! info
|
|
||||||
This step can be done later in the process, as Traefik v3 is compatible with the v2 format for [dynamic configuration](./v2-to-v3-details.md#dynamic-configuration-changes "Link to dynamic configuration changes").
|
|
||||||
Enable Traefik logs to get some help if any deprecated option is in use.
|
|
||||||
|
|
||||||
Check the changes in [dynamic configuration](./v2-to-v3-details.md#dynamic-configuration-changes "Link to dynamic configuration changes").
|
|
||||||
|
|
||||||
Then, progressively [switch each router to the v3 syntax](./v2-to-v3-details.md#configure-the-syntax-per-router "Link to configuring the syntax per router").
|
|
||||||
|
|
||||||
Test and update each Ingress resource and ensure that ingress traffic is not impacted.
|
|
||||||
|
|
||||||
Once a v3 Ingress resource migration is validated, deploy the resource and delete the v2 Ingress resource.
|
|
||||||
Repeat it until all Ingress resources are migrated.
|
|
||||||
|
|
||||||
Now, remove the following snippet added to the static configuration in Step 1:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# static configuration
|
|
||||||
core:
|
|
||||||
defaultRuleSyntax: v2
|
|
||||||
```
|
|
||||||
|
|
||||||
You are now fully migrated to Traefik v3 🎉
|
|
||||||
@@ -1,719 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Traefik Migration Documentation"
|
|
||||||
description: "Learn the steps needed to migrate to new Traefik Proxy v2 versions, i.e. v2.0 to v2.1 or v2.1 to v2.2. Read the technical documentation."
|
|
||||||
---
|
|
||||||
|
|
||||||
# Migration: Steps needed between the versions
|
|
||||||
|
|
||||||
## v2.0 to v2.1
|
|
||||||
|
|
||||||
### Kubernetes CRD
|
|
||||||
|
|
||||||
In v2.1, a new Kubernetes CRD called `TraefikService` was added.
|
|
||||||
While updating an installation to v2.1,
|
|
||||||
one should apply that CRD, and update the existing `ClusterRole` definition to allow Traefik to use that CRD.
|
|
||||||
|
|
||||||
To add that CRD and enhance the permissions, the following definitions need to be applied to the cluster.
|
|
||||||
|
|
||||||
```yaml tab="TraefikService"
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: traefikservices.traefik.containo.us
|
|
||||||
|
|
||||||
spec:
|
|
||||||
group: traefik.containo.us
|
|
||||||
version: v1alpha1
|
|
||||||
names:
|
|
||||||
kind: TraefikService
|
|
||||||
plural: traefikservices
|
|
||||||
singular: traefikservice
|
|
||||||
scope: Namespaced
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="ClusterRole"
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: traefik-ingress-controller
|
|
||||||
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- services
|
|
||||||
- endpoints
|
|
||||||
- secrets
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- extensions
|
|
||||||
- networking.k8s.io
|
|
||||||
resources:
|
|
||||||
- ingresses
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- extensions
|
|
||||||
- networking.k8s.io
|
|
||||||
resources:
|
|
||||||
- ingresses/status
|
|
||||||
verbs:
|
|
||||||
- update
|
|
||||||
- apiGroups:
|
|
||||||
- traefik.io
|
|
||||||
- traefik.containo.us
|
|
||||||
resources:
|
|
||||||
- middlewares
|
|
||||||
- middlewaretcps
|
|
||||||
- ingressroutes
|
|
||||||
- traefikservices
|
|
||||||
- ingressroutetcps
|
|
||||||
- ingressrouteudps
|
|
||||||
- tlsoptions
|
|
||||||
- tlsstores
|
|
||||||
- serverstransports
|
|
||||||
- serverstransporttcps
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
```
|
|
||||||
|
|
||||||
After having both resources applied, Traefik will work properly.
|
|
||||||
|
|
||||||
## v2.1 to v2.2
|
|
||||||
|
|
||||||
### Headers middleware: accessControlAllowOrigin
|
|
||||||
|
|
||||||
`accessControlAllowOrigin` is deprecated.
|
|
||||||
This field will be removed in future 2.x releases.
|
|
||||||
Please configure your allowed origins in `accessControlAllowOriginList` instead.
|
|
||||||
|
|
||||||
### Kubernetes CRD
|
|
||||||
|
|
||||||
In v2.2, new Kubernetes CRDs called `TLSStore` and `IngressRouteUDP` were added.
|
|
||||||
While updating an installation to v2.2,
|
|
||||||
one should apply that CRDs, and update the existing `ClusterRole` definition to allow Traefik to use that CRDs.
|
|
||||||
|
|
||||||
To add that CRDs and enhance the permissions, the following definitions need to be applied to the cluster.
|
|
||||||
|
|
||||||
```yaml tab="TLSStore"
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: tlsstores.traefik.containo.us
|
|
||||||
|
|
||||||
spec:
|
|
||||||
group: traefik.containo.us
|
|
||||||
version: v1alpha1
|
|
||||||
names:
|
|
||||||
kind: TLSStore
|
|
||||||
plural: tlsstores
|
|
||||||
singular: tlsstore
|
|
||||||
scope: Namespaced
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="IngressRouteUDP"
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: ingressrouteudps.traefik.containo.us
|
|
||||||
|
|
||||||
spec:
|
|
||||||
group: traefik.containo.us
|
|
||||||
version: v1alpha1
|
|
||||||
names:
|
|
||||||
kind: IngressRouteUDP
|
|
||||||
plural: ingressrouteudps
|
|
||||||
singular: ingressrouteudp
|
|
||||||
scope: Namespaced
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml tab="ClusterRole"
|
|
||||||
kind: ClusterRole
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: traefik-ingress-controller
|
|
||||||
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- services
|
|
||||||
- endpoints
|
|
||||||
- secrets
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- extensions
|
|
||||||
- networking.k8s.io
|
|
||||||
resources:
|
|
||||||
- ingresses
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- extensions
|
|
||||||
- networking.k8s.io
|
|
||||||
resources:
|
|
||||||
- ingresses/status
|
|
||||||
verbs:
|
|
||||||
- update
|
|
||||||
- apiGroups:
|
|
||||||
- traefik.io
|
|
||||||
- traefik.containo.us
|
|
||||||
resources:
|
|
||||||
- middlewares
|
|
||||||
- middlewaretcps
|
|
||||||
- ingressroutes
|
|
||||||
- traefikservices
|
|
||||||
- ingressroutetcps
|
|
||||||
- ingressrouteudps
|
|
||||||
- tlsoptions
|
|
||||||
- tlsstores
|
|
||||||
- serverstransports
|
|
||||||
- serverstransporttcps
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
```
|
|
||||||
|
|
||||||
After having both resources applied, Traefik will work properly.
|
|
||||||
|
|
||||||
### Kubernetes Ingress
|
|
||||||
|
|
||||||
To enable HTTPS, it is not sufficient anymore to only rely on a TLS section in the Ingress.
|
|
||||||
|
|
||||||
#### Expose an Ingress on 80 and 443
|
|
||||||
|
|
||||||
Define the default TLS configuration on the HTTPS entry point.
|
|
||||||
|
|
||||||
```yaml tab="Ingress"
|
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: example
|
|
||||||
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- secretName: my-tls-secret
|
|
||||||
|
|
||||||
rules:
|
|
||||||
- host: example.com
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: "/foo"
|
|
||||||
backend:
|
|
||||||
serviceName: example-com
|
|
||||||
servicePort: 80
|
|
||||||
```
|
|
||||||
|
|
||||||
Entry points definition and enable Ingress provider:
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
|
||||||
# Static configuration
|
|
||||||
|
|
||||||
entryPoints:
|
|
||||||
web:
|
|
||||||
address: :80
|
|
||||||
websecure:
|
|
||||||
address: :443
|
|
||||||
http:
|
|
||||||
tls: {}
|
|
||||||
|
|
||||||
providers:
|
|
||||||
kubernetesIngress: {}
|
|
||||||
```
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Static configuration
|
|
||||||
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
[entryPoints.websecure.http]
|
|
||||||
[entryPoints.websecure.http.tls]
|
|
||||||
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash tab="CLI"
|
|
||||||
# Static configuration
|
|
||||||
|
|
||||||
--entryPoints.web.address=:80
|
|
||||||
--entryPoints.websecure.address=:443
|
|
||||||
--entryPoints.websecure.http.tls=true
|
|
||||||
--providers.kubernetesIngress=true
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Use TLS only on one Ingress
|
|
||||||
|
|
||||||
Define the TLS restriction with annotations.
|
|
||||||
|
|
||||||
```yaml tab="Ingress"
|
|
||||||
kind: Ingress
|
|
||||||
apiVersion: networking.k8s.io/v1beta1
|
|
||||||
metadata:
|
|
||||||
name: example-tls
|
|
||||||
annotations:
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
|
||||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
|
||||||
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- secretName: my-tls-secret
|
|
||||||
|
|
||||||
rules:
|
|
||||||
- host: example.com
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: ""
|
|
||||||
backend:
|
|
||||||
serviceName: example-com
|
|
||||||
servicePort: 80
|
|
||||||
```
|
|
||||||
|
|
||||||
Entry points definition and enable Ingress provider:
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
|
||||||
# Static configuration
|
|
||||||
|
|
||||||
entryPoints:
|
|
||||||
web:
|
|
||||||
address: :80
|
|
||||||
websecure:
|
|
||||||
address: :443
|
|
||||||
|
|
||||||
providers:
|
|
||||||
kubernetesIngress: {}
|
|
||||||
```
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
# Static configuration
|
|
||||||
|
|
||||||
[entryPoints.web]
|
|
||||||
address = ":80"
|
|
||||||
|
|
||||||
[entryPoints.websecure]
|
|
||||||
address = ":443"
|
|
||||||
|
|
||||||
[providers.kubernetesIngress]
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash tab="CLI"
|
|
||||||
# Static configuration
|
|
||||||
|
|
||||||
--entryPoints.web.address=:80
|
|
||||||
--entryPoints.websecure.address=:443
|
|
||||||
--providers.kubernetesIngress=true
|
|
||||||
```
|
|
||||||
|
|
||||||
## v2.2.2 to v2.2.5
|
|
||||||
|
|
||||||
### InsecureSNI removal
|
|
||||||
|
|
||||||
In `v2.2.2` we introduced a new flag (`insecureSNI`) which was available as a global option to disable domain fronting.
|
|
||||||
Since `v2.2.5` this global option has been removed, and you should not use it anymore.
|
|
||||||
|
|
||||||
### HostSNI rule matcher removal
|
|
||||||
|
|
||||||
In `v2.2.2` we introduced a new rule matcher (`HostSNI`) for HTTP routers which was allowing to match the Server Name Indication at the router level.
|
|
||||||
Since `v2.2.5` this rule has been removed for HTTP routers, and you should not use it anymore.
|
|
||||||
|
|
||||||
## v2.2 to v2.3
|
|
||||||
|
|
||||||
### X.509 CommonName Deprecation
|
|
||||||
|
|
||||||
The deprecated, legacy behavior of treating the CommonName field on X.509 certificates as a host name when no Subject Alternative Names are present, is now disabled by default.
|
|
||||||
|
|
||||||
It means that if one is using https with your backend servers, and a certificate with only a CommonName,
|
|
||||||
Traefik will not try to match the server name indication with the CommonName anymore.
|
|
||||||
|
|
||||||
It can be temporarily re-enabled by adding the value `x509ignoreCN=0` to the `GODEBUG` environment variable.
|
|
||||||
|
|
||||||
More information: https://golang.org/doc/go1.15#commonname
|
|
||||||
|
|
||||||
### File Provider
|
|
||||||
|
|
||||||
The file parser has been changed, since v2.3 the unknown options/fields in a dynamic configuration file are treated as errors.
|
|
||||||
|
|
||||||
### IngressClass
|
|
||||||
|
|
||||||
In `v2.3`, the support of `IngressClass`, which is available since Kubernetes version `1.18`, has been introduced.
|
|
||||||
In order to be able to use this new resource the [Kubernetes RBAC](../reference/dynamic-configuration/kubernetes-crd.md#rbac) must be updated.
|
|
||||||
|
|
||||||
## v2.3 to v2.4
|
|
||||||
|
|
||||||
### ServersTransport
|
|
||||||
|
|
||||||
In `v2.4.0`, the support of `ServersTransport` has been introduced.
|
|
||||||
It is therefore necessary to update [RBAC](../reference/dynamic-configuration/kubernetes-crd.md#rbac) and [CRD](../reference/dynamic-configuration/kubernetes-crd.md) definitions.
|
|
||||||
|
|
||||||
## v2.4.7 to v2.4.8
|
|
||||||
|
|
||||||
### Non-ASCII Domain Names
|
|
||||||
|
|
||||||
In `v2.4.8`, we introduced a new check on domain names used in HTTP router rule `Host` and `HostRegexp` expressions,
|
|
||||||
and in TCP router rule `HostSNI` expression.
|
|
||||||
This check ensures that provided domain names don't contain non-ASCII characters.
|
|
||||||
If not, an error is raised, and the associated router will be shown as invalid in the dashboard.
|
|
||||||
|
|
||||||
This new behavior is intended to show what was failing silently previously and to help troubleshooting configuration issues.
|
|
||||||
It doesn't change the support for non-ASCII domain names in routers rules, which is not part of the Traefik feature set so far.
|
|
||||||
|
|
||||||
In order to use non-ASCII domain names in a router's rule, one should use the Punycode form of the domain name.
|
|
||||||
For more information, please read the [HTTP routers rule](../routing/routers/index.md#rule) part or [TCP router rules](../routing/routers/index.md#rule_1) part of the documentation.
|
|
||||||
|
|
||||||
## v2.4.8 to v2.4.9
|
|
||||||
|
|
||||||
### Tracing Span
|
|
||||||
|
|
||||||
In `v2.4.9`, we changed span error to log only server errors (>= 500).
|
|
||||||
|
|
||||||
## v2.4.9 to v2.4.10
|
|
||||||
|
|
||||||
### K8S CrossNamespace
|
|
||||||
|
|
||||||
In `v2.4.10`, the default value for `allowCrossNamespace` has been changed to `false`.
|
|
||||||
|
|
||||||
### K8S ExternalName Service
|
|
||||||
|
|
||||||
In `v2.4.10`, by default, it is no longer authorized to reference Kubernetes ExternalName services.
|
|
||||||
To allow it, the `allowExternalNameServices` option should be set to `true`.
|
|
||||||
|
|
||||||
## v2.4 to v2.5
|
|
||||||
|
|
||||||
### Kubernetes CRD
|
|
||||||
|
|
||||||
In `v2.5`, the [Traefik CRDs](../reference/dynamic-configuration/kubernetes-crd.md#definitions) have been updated to support the new API version `apiextensions.k8s.io/v1`.
|
|
||||||
As required by `apiextensions.k8s.io/v1`, we have included the OpenAPI validation schema.
|
|
||||||
|
|
||||||
After deploying the new [Traefik CRDs](../reference/dynamic-configuration/kubernetes-crd.md#definitions), the resources will be validated only on creation or update.
|
|
||||||
|
|
||||||
Please note that the unknown fields will not be pruned when migrating from `apiextensions.k8s.io/v1beta1` to `apiextensions.k8s.io/v1` CRDs.
|
|
||||||
For more details check out the official [documentation](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#specifying-a-structural-schema).
|
|
||||||
|
|
||||||
### Kubernetes Ingress
|
|
||||||
|
|
||||||
Traefik v2.5 moves forward for the Ingress provider to support Kubernetes v1.22.
|
|
||||||
|
|
||||||
Traefik now supports only v1.14+ Kubernetes clusters, which means the support of `extensions/v1beta1` API Version ingresses has been dropped.
|
|
||||||
|
|
||||||
The `extensions/v1beta1` API Version should now be replaced either by `networking.k8s.io/v1beta1` or by `networking.k8s.io/v1` (as of Kubernetes v1.19+).
|
|
||||||
|
|
||||||
The support of the `networking.k8s.io/v1beta1` API Version will stop in Kubernetes v1.22.
|
|
||||||
|
|
||||||
### Headers middleware: ssl redirect options
|
|
||||||
|
|
||||||
`sslRedirect`, `sslTemporaryRedirect`, `sslHost` and `sslForceHost` are deprecated in Traefik v2.5.
|
|
||||||
|
|
||||||
For simple HTTP to HTTPS redirection, you may use [EntryPoints redirections](../routing/entrypoints.md#redirection).
|
|
||||||
|
|
||||||
For more advanced use cases, you can use either the [RedirectScheme middleware](../middlewares/http/redirectscheme.md) or the [RedirectRegex middleware](../middlewares/http/redirectregex.md).
|
|
||||||
|
|
||||||
### Headers middleware: accessControlAllowOrigin
|
|
||||||
|
|
||||||
`accessControlAllowOrigin` is no longer supported in Traefik v2.5.
|
|
||||||
|
|
||||||
### X.509 CommonName Deprecation Bis
|
|
||||||
|
|
||||||
Following up on the deprecation started [previously](#x509-commonname-deprecation),
|
|
||||||
as the `x509ignoreCN=0` value for the `GODEBUG` is [deprecated in Go 1.17](https://tip.golang.org/doc/go1.17#crypto/x509),
|
|
||||||
the legacy behavior related to the CommonName field cannot be enabled at all anymore.
|
|
||||||
|
|
||||||
## v2.5.3 to v2.5.4
|
|
||||||
|
|
||||||
### Errors middleware
|
|
||||||
|
|
||||||
In `v2.5.4`, when the errors service is configured with the [`PassHostHeader`](../routing/services/index.md#pass-host-header) option to `true` (default),
|
|
||||||
the forwarded Host header value is now set to the client request Host value and not `0.0.0.0`.
|
|
||||||
Check out the [Errors middleware](../middlewares/http/errorpages.md#service) documentation for more details.
|
|
||||||
|
|
||||||
## v2.5 to v2.6
|
|
||||||
|
|
||||||
### HTTP/3
|
|
||||||
|
|
||||||
Traefik v2.6 introduces the `AdvertisedPort` option,
|
|
||||||
which allows advertising, in the `Alt-Svc` header, a UDP port different from the one on which Traefik is actually listening (the EntryPoint's port).
|
|
||||||
By doing so, it introduces a new configuration structure `http3`, which replaces the `enableHTTP3` option (which therefore doesn't exist anymore).
|
|
||||||
To enable HTTP/3 on an EntryPoint, please check out the [HTTP/3 configuration](../routing/entrypoints.md#http3) documentation.
|
|
||||||
|
|
||||||
### Kubernetes Gateway API Provider
|
|
||||||
|
|
||||||
In `v2.6`, the [Kubernetes Gateway API provider](../providers/kubernetes-gateway.md) now only supports the version [v1alpha2](https://gateway-api.sigs.k8s.io/v1alpha2/guides/) of the specification and
|
|
||||||
[route namespaces](https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io/v1beta1.RouteNamespaces) selectors, which requires Traefik to fetch and watch the cluster namespaces.
|
|
||||||
Therefore, the RBAC and CRD definitions must be updated.
|
|
||||||
|
|
||||||
## v2.6.0 to v2.6.1
|
|
||||||
|
|
||||||
### Metrics
|
|
||||||
|
|
||||||
In `v2.6.1`, the metrics system does not support any more custom HTTP method verbs to prevent potential metrics cardinality overhead.
|
|
||||||
In consequence, for metrics having the method label,
|
|
||||||
if the HTTP method verb of a request is not one defined in the set of common methods for [`HTTP/1.1`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)
|
|
||||||
or the [`PRI`](https://datatracker.ietf.org/doc/html/rfc7540#section-11.6) verb (for `HTTP/2`),
|
|
||||||
the value for the method label becomes `EXTENSION_METHOD`, instead of the request's one.
|
|
||||||
|
|
||||||
### Tracing
|
|
||||||
|
|
||||||
In `v2.6.1`, the Datadog tags added to a span changed from `service.name` to `traefik.service.name` and from `router.name` to `traefik.router.name`.
|
|
||||||
|
|
||||||
## v2.8
|
|
||||||
|
|
||||||
### TLS client authentication
|
|
||||||
|
|
||||||
In `v2.8`, the `caOptional` option is deprecated as TLS client authentication is a server side option.
|
|
||||||
This option available in the ForwardAuth middleware, as well as in the HTTP, Consul, Etcd, Redis, ZooKeeper, Marathon, Consul Catalog, and Docker providers has no effect and must not be used anymore.
|
|
||||||
|
|
||||||
### Consul Enterprise Namespaces
|
|
||||||
|
|
||||||
In `v2.8`, the `namespace` option of Consul and Consul Catalog providers is deprecated, please use the `namespaces` options instead.
|
|
||||||
|
|
||||||
### Traefik Pilot
|
|
||||||
|
|
||||||
In `v2.8`, the `pilot.token` and `pilot.dashboard` options are deprecated.
|
|
||||||
Please check our Blog for migration instructions later this year.
|
|
||||||
|
|
||||||
## v2.8.2
|
|
||||||
|
|
||||||
Since `v2.5.0`, the `PreferServerCipherSuites` is [deprecated and ignored](https://tip.golang.org/doc/go1.17#crypto/tls) by Go,
|
|
||||||
in `v2.8.2` the `preferServerCipherSuites` option is also deprecated and ignored in Traefik.
|
|
||||||
|
|
||||||
In `v2.8.2`, Traefik now reject certificates signed with the SHA-1 hash function. ([details](https://tip.golang.org/doc/go1.18#sha1))
|
|
||||||
|
|
||||||
## v2.9
|
|
||||||
|
|
||||||
### Traefik Pilot
|
|
||||||
|
|
||||||
In `v2.9`, Traefik Pilot support has been removed.
|
|
||||||
|
|
||||||
## v2.10
|
|
||||||
|
|
||||||
### Nomad Namespace
|
|
||||||
|
|
||||||
In `v2.10`, the `namespace` option of the Nomad provider is deprecated, please use the `namespaces` options instead.
|
|
||||||
|
|
||||||
### Kubernetes CRDs
|
|
||||||
|
|
||||||
In `v2.10`, the Kubernetes CRDs API Group `traefik.containo.us` is deprecated, and its support will end starting with Traefik v3. Please use the API Group `traefik.io` instead.
|
|
||||||
|
|
||||||
As the Kubernetes CRD provider still works with both API Versions (`traefik.io/v1alpha1` and `traefik.containo.us/v1alpha1`),
|
|
||||||
it means that for the same kind, namespace and name, the provider will only keep the `traefik.io/v1alpha1` resource.
|
|
||||||
|
|
||||||
In addition, the Kubernetes CRDs API Version `traefik.containo.us/v1alpha1` will not be supported in Traefik v3 itself.
|
|
||||||
|
|
||||||
Please note that it is a requirement to update the CRDs and the RBAC in the cluster before upgrading Traefik.
|
|
||||||
To do so, please apply the required [CRDs](https://raw.githubusercontent.com/traefik/traefik/v2.10/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml) and [RBAC](https://raw.githubusercontent.com/traefik/traefik/v2.10/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml) manifests for v2.10:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v2.10/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml
|
|
||||||
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v2.10/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
### Traefik Hub
|
|
||||||
|
|
||||||
In `v2.10`, Traefik Hub configuration has been removed because Traefik Hub v2 doesn't require this configuration.
|
|
||||||
|
|
||||||
## v2.11
|
|
||||||
|
|
||||||
### IPWhiteList (HTTP)
|
|
||||||
|
|
||||||
In `v2.11`, the `IPWhiteList` middleware is deprecated, please use the [IPAllowList](../middlewares/http/ipallowlist.md) middleware instead.
|
|
||||||
|
|
||||||
### IPWhiteList (TCP)
|
|
||||||
|
|
||||||
In `v2.11`, the `IPWhiteList` middleware is deprecated, please use the [IPAllowList](../middlewares/tcp/ipallowlist.md) middleware instead.
|
|
||||||
|
|
||||||
### TLS CipherSuites
|
|
||||||
|
|
||||||
> By default, cipher suites without ECDHE support are no longer offered by either clients or servers during pre-TLS 1.3 handshakes.
|
|
||||||
> This change can be reverted with the `tlsrsakex=1 GODEBUG` setting.
|
|
||||||
> (https://go.dev/doc/go1.22#crypto/tls)
|
|
||||||
|
|
||||||
The _RSA key exchange_ cipher suites are way less secure than the modern ECDHE cipher suites and exposes to potential vulnerabilities like [the Marvin Attack](https://people.redhat.com/~hkario/marvin).
|
|
||||||
Decision has been made to support ECDHE cipher suites only by default.
|
|
||||||
|
|
||||||
The following ciphers have been removed from the default list:
|
|
||||||
|
|
||||||
- `TLS_RSA_WITH_AES_128_CBC_SHA`
|
|
||||||
- `TLS_RSA_WITH_AES_256_CBC_SHA`
|
|
||||||
- `TLS_RSA_WITH_AES_128_GCM_SHA256`
|
|
||||||
- `TLS_RSA_WITH_AES_256_GCM_SHA384`
|
|
||||||
|
|
||||||
To enable these ciphers, please set the option `CipherSuites` in your [TLS configuration](../https/tls.md#cipher-suites) or set the environment variable `GODEBUG=tlsrsakex=1`.
|
|
||||||
|
|
||||||
### Minimum TLS Version
|
|
||||||
|
|
||||||
> By default, the minimum version offered by `crypto/tls` servers is now TLS 1.2 if not specified with config.MinimumVersion,
|
|
||||||
> matching the behavior of crypto/tls clients.
|
|
||||||
> This change can be reverted with the `tls10server=1 GODEBUG` setting.
|
|
||||||
> (https://go.dev/doc/go1.22#crypto/tls)
|
|
||||||
|
|
||||||
To enable TLS 1.0, please set the option `MinVersion` to `VersionTLS10` in your [TLS configuration](../https/tls.md#cipher-suites) or set the environment variable `GODEBUG=tls10server=1`.
|
|
||||||
|
|
||||||
## v2.11.1
|
|
||||||
|
|
||||||
### Maximum Router Priority Value
|
|
||||||
|
|
||||||
Before v2.11.1, the maximum user-defined router priority value is:
|
|
||||||
|
|
||||||
- `MaxInt32` for 32-bit platforms,
|
|
||||||
- `MaxInt64` for 64-bit platforms.
|
|
||||||
|
|
||||||
Please check out the [go documentation](https://pkg.go.dev/math#pkg-constants) for more information.
|
|
||||||
|
|
||||||
In v2.11.1, Traefik reserves a range of priorities for its internal routers and now,
|
|
||||||
the maximum user-defined router priority value is:
|
|
||||||
|
|
||||||
- `(MaxInt32 - 1000)` for 32-bit platforms,
|
|
||||||
- `(MaxInt64 - 1000)` for 64-bit platforms.
|
|
||||||
|
|
||||||
### EntryPoint.Transport.RespondingTimeouts.<Timeout>
|
|
||||||
|
|
||||||
Starting with `v2.11.1` the following timeout options are deprecated:
|
|
||||||
|
|
||||||
- `<entryPoint>.transport.respondingTimeouts.readTimeout`
|
|
||||||
- `<entryPoint>.transport.respondingTimeouts.writeTimeout`
|
|
||||||
- `<entryPoint>.transport.respondingTimeouts.idleTimeout`
|
|
||||||
|
|
||||||
They have been replaced by:
|
|
||||||
|
|
||||||
- `<entryPoint>.transport.respondingTimeouts.http.readTimeout`
|
|
||||||
- `<entryPoint>.transport.respondingTimeouts.http.writeTimeout`
|
|
||||||
- `<entryPoint>.transport.respondingTimeouts.http.idleTimeout`
|
|
||||||
|
|
||||||
### EntryPoint.Transport.RespondingTimeouts.TCP.LingeringTimeout
|
|
||||||
|
|
||||||
Starting with `v2.11.1` a new `lingeringTimeout` entryPoints option has been introduced, with a default value of 2s.
|
|
||||||
|
|
||||||
The lingering timeout defines the maximum duration between each TCP read operation on the connection.
|
|
||||||
As a layer 4 timeout, it applies during HTTP handling but respects the configured HTTP server `readTimeout`.
|
|
||||||
|
|
||||||
This change avoids Traefik instances with the default configuration hanging while waiting for bytes to be read on the connection.
|
|
||||||
|
|
||||||
We suggest to adapt this value accordingly to your situation.
|
|
||||||
The new default value is purposely narrowed and can close the connection too early.
|
|
||||||
|
|
||||||
Increasing the `lingeringTimeout` value could be the solution notably if you are dealing with the following errors:
|
|
||||||
|
|
||||||
- TCP: `Error while handling TCP connection: readfrom tcp X.X.X.X:X->X.X.X.X:X: read tcp X.X.X.X:X->X.X.X.X:X: i/o timeout`
|
|
||||||
- HTTP: `'499 Client Closed Request' caused by: context canceled`
|
|
||||||
- HTTP: `ReverseProxy read error during body copy: read tcp X.X.X.X:X->X.X.X.X:X: use of closed network connection`
|
|
||||||
|
|
||||||
## v2.11.2
|
|
||||||
|
|
||||||
### LingeringTimeout
|
|
||||||
|
|
||||||
Starting with `v2.11.2` the `<entrypoint>.transport.respondingTimeouts.tcp.lingeringTimeout` introduced in `v2.11.1` has been removed.
|
|
||||||
|
|
||||||
### RespondingTimeouts.TCP and RespondingTimeouts.HTTP
|
|
||||||
|
|
||||||
Starting with `v2.11.2` the `respondingTimeouts.tcp` and `respondingTimeouts.http` sections introduced in `v2.11.1` have been removed.
|
|
||||||
To configure the responding timeouts, please use the [`respondingTimeouts`](../routing/entrypoints.md#respondingtimeouts) section.
|
|
||||||
|
|
||||||
### EntryPoint.Transport.RespondingTimeouts.ReadTimeout
|
|
||||||
|
|
||||||
Starting with `v2.11.2` the entryPoints [`readTimeout`](../routing/entrypoints.md#respondingtimeouts) option default value changed to 60 seconds.
|
|
||||||
|
|
||||||
For HTTP, this option defines the maximum duration for reading the entire request, including the body.
|
|
||||||
For TCP, this option defines the maximum duration for the first bytes to be read on the connection.
|
|
||||||
|
|
||||||
The default value was previously set to zero, which means no timeout.
|
|
||||||
|
|
||||||
This change has been done to avoid Traefik instances with the default configuration to be hanging forever while waiting for bytes to be read on the connection.
|
|
||||||
|
|
||||||
Increasing the `readTimeout` value could be the solution notably if you are dealing with the following errors:
|
|
||||||
|
|
||||||
- TCP: `Error while handling TCP connection: readfrom tcp X.X.X.X:X->X.X.X.X:X: read tcp X.X.X.X:X->X.X.X.X:X: i/o timeout`
|
|
||||||
- HTTP: `'499 Client Closed Request' caused by: context canceled`
|
|
||||||
- HTTP: `ReverseProxy read error during body copy: read tcp X.X.X.X:X->X.X.X.X:X: use of closed network connection`
|
|
||||||
|
|
||||||
## v2.11.3
|
|
||||||
|
|
||||||
### Connection headers
|
|
||||||
|
|
||||||
In `v2.11.3`, the handling of the request Connection headers directives has changed to prevent any abuse.
|
|
||||||
Before, Traefik removed any header listed in the Connection header just before forwarding the request to the backends.
|
|
||||||
Now, Traefik removes the headers listed in the Connection header as soon as the request is handled.
|
|
||||||
As a consequence, middlewares do not have access to those Connection headers,
|
|
||||||
and a new option has been introduced to specify which ones could go through the middleware chain before being removed: `<entrypoint>.forwardedHeaders.connection`.
|
|
||||||
|
|
||||||
Please check out the [entrypoint forwarded headers connection option configuration](../routing/entrypoints.md#forwarded-headers) documentation.
|
|
||||||
|
|
||||||
## v2.11.14
|
|
||||||
|
|
||||||
### X-Forwarded-Prefix
|
|
||||||
|
|
||||||
In `v2.11.14`, the `X-Forwarded-Prefix` header is now handled like the other `X-Forwarded-*` headers: Traefik removes it when it's sent from an untrusted source.
|
|
||||||
Please refer to the Forwarded headers [documentation](../routing/entrypoints.md#forwarded-headers) for more details.
|
|
||||||
|
|
||||||
## v2.11.24
|
|
||||||
|
|
||||||
### Request Path Sanitization
|
|
||||||
|
|
||||||
Since `v2.11.24`, the incoming request path is now cleaned before being used to match the router rules and sent to the backends.
|
|
||||||
Any `/../`, `/./` or duplicate slash segments in the request path is interpreted and/or collapsed.
|
|
||||||
|
|
||||||
If you want to disable this behavior, you can set the [`sanitizePath` option](../routing/entrypoints.md#sanitizepath) to `false` in the entryPoint HTTP configuration.
|
|
||||||
This can be useful when dealing with legacy clients that are not url-encoding data in the request path.
|
|
||||||
For example, as base64 uses the “/” character internally,
|
|
||||||
if it's not url encoded,
|
|
||||||
it can lead to unsafe routing when the `sanitizePath` option is set to `false`.
|
|
||||||
|
|
||||||
!!! warning "Security"
|
|
||||||
|
|
||||||
Setting the `sanitizePath` option to `false` is not safe.
|
|
||||||
Ensure every request is properly url encoded instead.
|
|
||||||
|
|
||||||
## v2.11.25
|
|
||||||
|
|
||||||
### Request Path Normalization
|
|
||||||
|
|
||||||
Since `v2.11.25`, the request path is now normalized by decoding unreserved characters in the request path,
|
|
||||||
and also uppercasing the percent-encoded characters.
|
|
||||||
This follows [RFC 3986 percent-encoding normalization](https://datatracker.ietf.org/doc/html/rfc3986#section-6.2.2.2),
|
|
||||||
and [RFC 3986 case normalization](https://datatracker.ietf.org/doc/html/rfc3986#section-6.2.2.1).
|
|
||||||
|
|
||||||
The normalization happens before the request path is sanitized,
|
|
||||||
and cannot be disabled.
|
|
||||||
This notably helps with encoded dots characters (which are unreserved characters) to be sanitized properly.
|
|
||||||
|
|
||||||
### Routing Path
|
|
||||||
|
|
||||||
Since `v2.11.25`, the reserved characters [(as per RFC 3986)](https://datatracker.ietf.org/doc/html/rfc3986#section-2.2) are kept encoded in the request path when matching the router rules.
|
|
||||||
Those characters, when decoded, change the meaning of the request path for routing purposes,
|
|
||||||
and Traefik now keeps them encoded to avoid any ambiguity.
|
|
||||||
|
|
||||||
### Request Path Matching Examples
|
|
||||||
|
|
||||||
| Request Path | Router Rule | Traefik v2.11.24 | Traefik v2.11.25 |
|
|
||||||
|-------------------|------------------------|------------------|------------------|
|
|
||||||
| `/foo%2Fbar` | PathPrefix(`/foo/bar`) | Match | No match |
|
|
||||||
| `/foo/../bar` | PathPrefix(`/foo`) | No match | No match |
|
|
||||||
| `/foo/../bar` | PathPrefix(`/bar`) | Match | Match |
|
|
||||||
| `/foo/%2E%2E/bar` | PathPrefix(`/foo`) | Match | No match |
|
|
||||||
| `/foo/%2E%2E/bar` | PathPrefix(`/bar`) | No match | Match |
|
|
||||||
|
|
||||||
## v2.11.28
|
|
||||||
|
|
||||||
### MultiPath TCP
|
|
||||||
|
|
||||||
Since `v2.11.28`, the MultiPath TCP support introduced with `v2.11.26` has been removed.
|
|
||||||
It appears that enabling MPTCP on some platforms can cause Traefik to stop with the following error logs message:
|
|
||||||
|
|
||||||
- `set tcp X.X.X.X:X->X.X.X.X:X: setsockopt: operation not supported`
|
|
||||||
|
|
||||||
However, it can be re-enabled by setting the `multipathtcp` variable in the GODEBUG environment variable, see the related [go documentation](https://go.dev/doc/godebug#go-124).
|
|
||||||
@@ -1,371 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Traefik Migration Documentation"
|
|
||||||
description: "Learn the steps needed to migrate to new Traefik Proxy v3 versions. Read the technical documentation."
|
|
||||||
---
|
|
||||||
|
|
||||||
# Migration: Steps needed between the versions
|
|
||||||
|
|
||||||
## v3.0 to v3.1
|
|
||||||
|
|
||||||
### Kubernetes Provider RBACs
|
|
||||||
|
|
||||||
Starting with v3.1, the Kubernetes Providers now use the [EndpointSlices API](https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/) (Kubernetes >=v1.21) to discover service endpoint addresses.
|
|
||||||
It also brings NodePort load-balancing which requires Nodes resources lookup.
|
|
||||||
|
|
||||||
Therefore, in the corresponding RBACs (see [KubernetesIngress](../routing/providers/kubernetes-ingress.md#configuration-example), [KubernetesCRD](../reference/dynamic-configuration/kubernetes-crd.md#rbac), and [KubernetesGateway](../reference/dynamic-configuration/kubernetes-gateway-rbac.yml) provider RBACs):
|
|
||||||
|
|
||||||
- the `endpoints` right has to be removed and the following `endpointslices` right has to be added:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
...
|
|
||||||
- apiGroups:
|
|
||||||
- discovery.k8s.io
|
|
||||||
resources:
|
|
||||||
- endpointslices
|
|
||||||
verbs:
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
- the `nodes` right has to be added:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
...
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- nodes
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Gateway API: KubernetesGateway Provider
|
|
||||||
|
|
||||||
In v3.1, the KubernetesGateway Provider is no longer an experimental feature.
|
|
||||||
It can be enabled without the associated `experimental.kubernetesgateway` option, which is now deprecated.
|
|
||||||
|
|
||||||
??? example "An example of the experimental `kubernetesgateway` option"
|
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
|
||||||
experimental:
|
|
||||||
kubernetesgateway: true
|
|
||||||
```
|
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
|
||||||
[experimental]
|
|
||||||
kubernetesgateway=true
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash tab="CLI"
|
|
||||||
--experimental.kubernetesgateway=true
|
|
||||||
```
|
|
||||||
|
|
||||||
##### Remediation
|
|
||||||
|
|
||||||
The `kubernetesgateway` option should be removed from the experimental section of the static configuration.
|
|
||||||
To configure `kubernetesgateway`, please check out the [KubernetesGateway Provider documentation](../providers/kubernetes-gateway.md).
|
|
||||||
|
|
||||||
## v3.1.0 to v3.1.1
|
|
||||||
|
|
||||||
### IngressClass Lookup
|
|
||||||
|
|
||||||
The Kubernetes Ingress provider option `disableIngressClassLookup` has been deprecated in v3.1.1, and will be removed in the next major version.
|
|
||||||
Please use the `disableClusterScopeResources` option instead to avoid cluster scope resources discovery (IngressClass, Nodes).
|
|
||||||
|
|
||||||
## v3.1 to v3.2
|
|
||||||
|
|
||||||
### Kubernetes CRD Provider
|
|
||||||
|
|
||||||
Starting with v3.2, the CRDs has been updated on [TraefikService](../../routing/services#mirroring-service) (PR [#11032](https://github.com/traefik/traefik/pull/11032)), on [RateLimit](../../middlewares/http/ratelimit) & [InFlightReq](../../middlewares/http/inflightreq) middlewares (PR [#9747](https://github.com/traefik/traefik/pull/9747)) and on [Compress](../../middlewares/http/compress) middleware (PR [#10943](https://github.com/traefik/traefik/pull/10943)).
|
|
||||||
|
|
||||||
This update adds only new optional fields.
|
|
||||||
CRDs can be updated with this command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.3/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
### Kubernetes Gateway Provider Standard Channel
|
|
||||||
|
|
||||||
Starting with v3.2, the Kubernetes Gateway Provider now supports [GRPCRoute](https://gateway-api.sigs.k8s.io/api-types/grpcroute/).
|
|
||||||
|
|
||||||
Therefore, in the corresponding RBACs (see [KubernetesGateway](../reference/dynamic-configuration/kubernetes-gateway-rbac.yml) provider RBACs),
|
|
||||||
the `grcroutes` and `grpcroutes/status` rights have to be added.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
...
|
|
||||||
- apiGroups:
|
|
||||||
- gateway.networking.k8s.io
|
|
||||||
resources:
|
|
||||||
- grpcroutes
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- gateway.networking.k8s.io
|
|
||||||
resources:
|
|
||||||
- grpcroutes/status
|
|
||||||
verbs:
|
|
||||||
- update
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
### Kubernetes Gateway Provider Experimental Channel
|
|
||||||
|
|
||||||
!!! warning "Breaking changes"
|
|
||||||
|
|
||||||
Because of a breaking change introduced in Kubernetes Gateway [v1.2.0-rc1](https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.2.0-rc1),
|
|
||||||
Traefik v3.3 only supports Kubernetes Gateway v1.2.x when experimental channel features are enabled.
|
|
||||||
|
|
||||||
Starting with v3.2, the Kubernetes Gateway Provider now supports [BackendTLSPolicy](https://gateway-api.sigs.k8s.io/api-types/backendtlspolicy/).
|
|
||||||
|
|
||||||
Therefore, in the corresponding RBACs (see [KubernetesGateway](../reference/dynamic-configuration/kubernetes-gateway-rbac.yml) provider RBACs),
|
|
||||||
the `backendtlspolicies` and `backendtlspolicies/status` rights have to be added.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
...
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- configmaps
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- gateway.networking.k8s.io
|
|
||||||
resources:
|
|
||||||
- backendtlspolicies
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- gateway.networking.k8s.io
|
|
||||||
resources:
|
|
||||||
- backendtlspolicies/status
|
|
||||||
verbs:
|
|
||||||
- update
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
## v3.2.1
|
|
||||||
|
|
||||||
### X-Forwarded-Prefix
|
|
||||||
|
|
||||||
In `v3.2.1`, the `X-Forwarded-Prefix` header is now handled like the other `X-Forwarded-*` headers: Traefik removes it when it's sent from an untrusted source.
|
|
||||||
Please refer to the Forwarded headers [documentation](../routing/entrypoints.md#forwarded-headers) for more details.
|
|
||||||
|
|
||||||
## v3.2.2
|
|
||||||
|
|
||||||
### Swarm Provider
|
|
||||||
|
|
||||||
In `v3.2.2`, the `traefik.docker.network` and `traefik.docker.lbswarm` labels have been deprecated,
|
|
||||||
please use the `traefik.swarm.network` and `traefik.swarm.lbswarm` labels instead.
|
|
||||||
|
|
||||||
## v3.2 to v3.3
|
|
||||||
|
|
||||||
### ACME DNS Certificate Resolver
|
|
||||||
|
|
||||||
In `v3.3`, the `acme.dnsChallenge.delaybeforecheck` and `acme.dnsChallenge.disablepropagationcheck` options of the ACME certificate resolver are deprecated,
|
|
||||||
please use respectively `acme.dnsChallenge.propagation.delayBeforeChecks` and `acme.dnsChallenge.propagation.disableChecks` options instead.
|
|
||||||
|
|
||||||
### Tracing Global Attributes
|
|
||||||
|
|
||||||
In `v3.3`, the `tracing.globalAttributes` option has been deprecated, please use the `tracing.resourceAttributes` option instead.
|
|
||||||
The `tracing.globalAttributes` option is misleading as its name does not reflect the operation of adding resource attributes to be sent to the collector,
|
|
||||||
and will be removed in the next major version.
|
|
||||||
|
|
||||||
## v3.3.4
|
|
||||||
|
|
||||||
### OpenTelemetry Request Duration metric
|
|
||||||
|
|
||||||
In `v3.3.4`, the OpenTelemetry Request Duration metric (named `traefik_(entrypoint|router|service)_request_duration_seconds`) unit has been changed from milliseconds to seconds.
|
|
||||||
To be consistent with the naming and other metrics providers, the metric now reports the duration in seconds.
|
|
||||||
|
|
||||||
## v3.3.5
|
|
||||||
|
|
||||||
### Compress Middleware
|
|
||||||
|
|
||||||
In `v3.3.5`, the compress middleware `encodings` option default value is now `gzip, br, zstd`.
|
|
||||||
This change helps the algorithm selection to favor the `gzip` algorithm over the other algorithms.
|
|
||||||
|
|
||||||
It impacts requests that do not specify their preferred algorithm,
|
|
||||||
or has no order preference, in the `Accept-Encoding` header.
|
|
||||||
|
|
||||||
## v3.3.6
|
|
||||||
|
|
||||||
### Request Path Sanitization
|
|
||||||
|
|
||||||
Since `v3.3.6`, the incoming request path is now cleaned before being used to match the router rules and sent to the backends.
|
|
||||||
Any `/../`, `/./` or duplicate slash segments in the request path is interpreted and/or collapsed.
|
|
||||||
|
|
||||||
If you want to disable this behavior, you can set the [`sanitizePath` option](../reference/install-configuration/entrypoints.md#sanitizepath) to `false` in the entryPoint HTTP configuration.
|
|
||||||
This can be useful when dealing with legacy clients that are not url-encoding data in the request path.
|
|
||||||
For example, as base64 uses the “/” character internally,
|
|
||||||
if it's not url encoded,
|
|
||||||
it can lead to unsafe routing when the `sanitizePath` option is set to `false`.
|
|
||||||
|
|
||||||
!!! warning "Security"
|
|
||||||
|
|
||||||
Setting the `sanitizePath` option to `false` is not safe.
|
|
||||||
Ensure every request is properly url encoded instead.
|
|
||||||
|
|
||||||
## v3.3 to v3.4
|
|
||||||
|
|
||||||
### Kubernetes CRD Provider
|
|
||||||
|
|
||||||
#### Load-Balancing
|
|
||||||
|
|
||||||
In `v3.4`, the HTTP service definition has been updated.
|
|
||||||
The strategy field now supports two new values: `wrr` and `p2c` (please refer to the [HTTP Services Load Balancing documentation](../../routing/services/#load-balancing-strategy) for more details).
|
|
||||||
|
|
||||||
CRDs can be updated with this command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.4/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
Please note that the `RoundRobin` strategy value is now deprecated, but still supported and equivalent to `wrr`, and will be removed in the next major release.
|
|
||||||
|
|
||||||
#### ServersTransport CA Certificate
|
|
||||||
|
|
||||||
In `v3.4`, a new `rootCAs` option has been added to the `ServersTransport` and `ServersTransportTCP` CRDs.
|
|
||||||
It allows the configuration of CA certificates from both `ConfigMaps` and `Secrets`,
|
|
||||||
and replaces the `rootCAsSecrets` option, as shown below:
|
|
||||||
|
|
||||||
CRDs can be updated with this command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.4/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
RBACs need to be updated with this command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.4/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
---
|
|
||||||
apiVersion: traefik.io/v1alpha1
|
|
||||||
kind: ServersTransport
|
|
||||||
metadata:
|
|
||||||
name: foo
|
|
||||||
namespace: bar
|
|
||||||
spec:
|
|
||||||
rootCAs:
|
|
||||||
- configMap: ca-config-map
|
|
||||||
- secret: ca-secret
|
|
||||||
|
|
||||||
---
|
|
||||||
apiVersion: traefik.io/v1alpha1
|
|
||||||
kind: ServersTransportTCP
|
|
||||||
metadata:
|
|
||||||
name: foo
|
|
||||||
namespace: bar
|
|
||||||
spec:
|
|
||||||
rootCAs:
|
|
||||||
- configMap: ca-config-map
|
|
||||||
- secret: ca-secret
|
|
||||||
```
|
|
||||||
|
|
||||||
The `rootCAsSecrets` option, which allows only `Secrets` references,
|
|
||||||
is still supported, but is now deprecated,
|
|
||||||
and will be removed in the next major release.
|
|
||||||
|
|
||||||
### Rule Syntax
|
|
||||||
|
|
||||||
In `v3.4.0`, the `core.defaultRuleSyntax` static configuration option and the `ruleSyntax` router option have been deprecated,
|
|
||||||
and will be removed in the next major version.
|
|
||||||
|
|
||||||
This `core.defaultRuleSyntax` option was used to switch between the v2 and v3 syntax for the router's rules,
|
|
||||||
and to help with the migration from v2 to v3.
|
|
||||||
|
|
||||||
The `ruleSyntax` router's option was used to override the default rule syntax for a specific router.
|
|
||||||
|
|
||||||
In preparation for the next major release, please remove any use of these two options and use the v3 syntax for writing the router's rules.
|
|
||||||
|
|
||||||
## v3.4.1
|
|
||||||
|
|
||||||
### Request Path Normalization
|
|
||||||
|
|
||||||
Since `v3.4.1`, the request path is now normalized by decoding unreserved characters in the request path,
|
|
||||||
and also uppercasing the percent-encoded characters.
|
|
||||||
This follows [RFC 3986 percent-encoding normalization](https://datatracker.ietf.org/doc/html/rfc3986#section-6.2.2.2),
|
|
||||||
and [RFC 3986 case normalization](https://datatracker.ietf.org/doc/html/rfc3986#section-6.2.2.1).
|
|
||||||
|
|
||||||
The normalization happens before the request path is sanitized,
|
|
||||||
and cannot be disabled.
|
|
||||||
This notably helps with encoded dots characters (which are unreserved characters) to be sanitized properly.
|
|
||||||
|
|
||||||
### Routing Path
|
|
||||||
|
|
||||||
Since `v3.4.1`, the reserved characters [(as per RFC 3986)](https://datatracker.ietf.org/doc/html/rfc3986#section-2.2) are kept encoded in the request path when matching the router rules.
|
|
||||||
Those characters, when decoded, change the meaning of the request path for routing purposes,
|
|
||||||
and Traefik now keeps them encoded to avoid any ambiguity.
|
|
||||||
|
|
||||||
### Request Path Matching Examples
|
|
||||||
|
|
||||||
| Request Path | Router Rule | Traefik v3.4.0 | Traefik v3.4.1 |
|
|
||||||
|-------------------|------------------------|----------------|----------------|
|
|
||||||
| `/foo%2Fbar` | PathPrefix(`/foo/bar`) | Match | No match |
|
|
||||||
| `/foo/../bar` | PathPrefix(`/foo`) | No match | No match |
|
|
||||||
| `/foo/../bar` | PathPrefix(`/bar`) | Match | Match |
|
|
||||||
| `/foo/%2E%2E/bar` | PathPrefix(`/foo`) | Match | No match |
|
|
||||||
| `/foo/%2E%2E/bar` | PathPrefix(`/bar`) | No match | Match |
|
|
||||||
|
|
||||||
## v3.4.5
|
|
||||||
|
|
||||||
### MultiPath TCP
|
|
||||||
|
|
||||||
Since `v3.4.5`, the MultiPath TCP support introduced with `v3.4.2` has been removed.
|
|
||||||
It appears that enabling MPTCP on some platforms can cause Traefik to stop with the following error logs message:
|
|
||||||
|
|
||||||
- `set tcp X.X.X.X:X->X.X.X.X:X: setsockopt: operation not supported`
|
|
||||||
|
|
||||||
However, it can be re-enabled by setting the `multipathtcp` variable in the GODEBUG environment variable, see the related [go documentation](https://go.dev/doc/godebug#go-124).
|
|
||||||
|
|
||||||
## v3.5.0
|
|
||||||
|
|
||||||
### Observability
|
|
||||||
|
|
||||||
#### TraceVerbosity on Routers and Entrypoints
|
|
||||||
|
|
||||||
Starting with `v3.5.0`, a new `traceVerbosity` option is available for both entrypoints and routers.
|
|
||||||
This option allows you to control the level of detail for tracing spans.
|
|
||||||
Routers can override the value inherited from their entrypoint.
|
|
||||||
|
|
||||||
**Impact:**
|
|
||||||
|
|
||||||
- If you rely on tracing, review your configuration to explicitly set the desired verbosity level.
|
|
||||||
- Existing configurations will default to `minimal` unless overridden, which will result in fewer spans being generated than before.
|
|
||||||
|
|
||||||
Possible values are:
|
|
||||||
|
|
||||||
- `minimal`: produces a single server span and one client span for each request processed by a router.
|
|
||||||
- `detailed`: enables the creation of additional spans for each middleware executed for each request processed by a router.
|
|
||||||
|
|
||||||
See the updated documentation for [entrypoints](../reference/install-configuration/entrypoints.md) and [dynamic routers](../reference/dynamic-configuration/file.md#observability-options).
|
|
||||||
|
|
||||||
#### K8s Resource Attributes
|
|
||||||
|
|
||||||
Since `v3.5.0`, the semconv attributes `k8s.pod.name` and `k8s.pod.uid` are injected automatically in OTel resource attributes when OTel tracing/logs/metrics are enabled.
|
|
||||||
|
|
||||||
For that purpose, the following right has to be added to the Traefik Kubernetes RBACs:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
...
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- pods
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
...
|
|
||||||
```
|
|
||||||
@@ -69,27 +69,43 @@ accessLog:
|
|||||||
|
|
||||||
_Optional, Default="common"_
|
_Optional, Default="common"_
|
||||||
|
|
||||||
By default, logs are written using the Common Log Format (CLF).
|
By default, logs are written using the Traefik Common Log Format (CLF).
|
||||||
To write logs in JSON, use `json` in the `format` option.
|
The available log formats are:
|
||||||
If the given format is unsupported, the default (CLF) is used instead.
|
|
||||||
|
|
||||||
!!! info "Common Log Format"
|
- `common` - Traefik's extended CLF format (default)
|
||||||
|
- `genericCLF` - Generic CLF format compatible with standard log analyzers
|
||||||
|
- `json` - JSON format for structured logging
|
||||||
|
|
||||||
|
If the given format is unsupported, the default (`common`) is used instead.
|
||||||
|
|
||||||
|
!!! info "Traefik Common Log Format vs Generic CLF"
|
||||||
|
|
||||||
|
**Traefik Common Log Format (`common`):**
|
||||||
```html
|
```html
|
||||||
<remote_IP_address> - <client_user_name_if_available> [<timestamp>] "<request_method> <request_path> <request_protocol>" <HTTP_status> <content-length> "<request_referrer>" "<request_user_agent>" <number_of_requests_received_since_Traefik_started> "<Traefik_router_name>" "<Traefik_server_URL>" <request_duration_in_ms>ms
|
<remote_IP_address> - <client_user_name_if_available> [<timestamp>] "<request_method> <request_path> <request_protocol>" <HTTP_status> <content-length> "<request_referrer>" "<request_user_agent>" <number_of_requests_received_since_Traefik_started> "<Traefik_router_name>" "<Traefik_server_URL>" <request_duration_in_ms>ms
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Generic CLF Format (`genericCLF`):**
|
||||||
|
```html
|
||||||
|
<remote_IP_address> - <client_user_name_if_available> [<timestamp>] "<request_method> <request_path> <request_protocol>" <HTTP_status> <content-length> "<request_referrer>" "<request_user_agent>"
|
||||||
|
```
|
||||||
|
|
||||||
|
The `genericCLF` format omits Traefik-specific fields (request count, router name, service URL, and duration) for better compatibility with standard CLF parsers.
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
|
# JSON format
|
||||||
accessLog:
|
accessLog:
|
||||||
format: "json"
|
format: "json"
|
||||||
```
|
```
|
||||||
|
|
||||||
```toml tab="File (TOML)"
|
```toml tab="File (TOML)"
|
||||||
|
# JSON format
|
||||||
[accessLog]
|
[accessLog]
|
||||||
format = "json"
|
format = "json"
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
|
# JSON format
|
||||||
--accesslog.format=json
|
--accesslog.format=json
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -362,7 +378,7 @@ accesslog:
|
|||||||
--accesslog.otlp.serviceName=name
|
--accesslog.otlp.serviceName=name
|
||||||
```
|
```
|
||||||
|
|
||||||
### `ressourceAttributes`
|
### `resourceAttributes`
|
||||||
|
|
||||||
_Optional, Default=empty_
|
_Optional, Default=empty_
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ 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.
|
||||||
|
When `filePath` is specified, Traefik will write logs only to that file (not to standard output).
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
# Writing Logs to a File
|
# Writing Logs to a File
|
||||||
@@ -241,7 +242,7 @@ log:
|
|||||||
--log.otlp.serviceName=name
|
--log.otlp.serviceName=name
|
||||||
```
|
```
|
||||||
|
|
||||||
### `ressourceAttributes`
|
### `resourceAttributes`
|
||||||
|
|
||||||
_Optional, Default=empty_
|
_Optional, Default=empty_
|
||||||
|
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ metrics:
|
|||||||
```bash tab="CLI"
|
```bash tab="CLI"
|
||||||
--metrics.otlp.serviceName=name
|
--metrics.otlp.serviceName=name
|
||||||
```
|
```
|
||||||
#### `ressourceAttributes`
|
#### `resourceAttributes`
|
||||||
|
|
||||||
_Optional, Default=empty_
|
_Optional, Default=empty_
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ description: "Traefik supports several tracing backends, including OpenTelemetry
|
|||||||
|
|
||||||
# OpenTelemetry
|
# OpenTelemetry
|
||||||
|
|
||||||
Traefik Proxy follows [official OpenTelemetry semantic conventions v1.26.0](https://github.com/open-telemetry/semantic-conventions/blob/v1.26.0/docs/http/http-spans.md).
|
Traefik Proxy follows [official OpenTelemetry semantic conventions v1.37.0](https://github.com/open-telemetry/semantic-conventions/blob/v1.37.0/docs/http/http-spans.md).
|
||||||
|
|
||||||
To enable the OpenTelemetry tracer:
|
To enable the OpenTelemetry tracer:
|
||||||
|
|
||||||
|
|||||||
@@ -155,8 +155,9 @@ When the `observability` options are not defined on a router, it inherits the be
|
|||||||
|
|
||||||
Traefik Proxy supports the following log formats:
|
Traefik Proxy supports the following log formats:
|
||||||
|
|
||||||
- Common Log Format (CLF)
|
- `common` - Traefik's extended CLF format (default)
|
||||||
- JSON
|
- `genericCLF` - Generic CLF format compatible with standard log analyzers
|
||||||
|
- `json` - JSON format for structured logging
|
||||||
|
|
||||||
## Access Log Filters
|
## Access Log Filters
|
||||||
|
|
||||||
@@ -172,7 +173,7 @@ The available filters are:
|
|||||||
|
|
||||||
When using the `json` format, you can customize which fields are included in your access logs.
|
When using the `json` format, you can customize which fields are included in your access logs.
|
||||||
|
|
||||||
- **Request Fields:** You can choose to `keep`, `drop`, or `redact` any of the standard request fields. A complete list of available fields like `ClientHost`, `RequestMethod`, and `Duration` can be found in the [reference documentation](../reference/install-configuration/observability/logs-and-accesslogs.md#available-fields).
|
- **Request Fields:** You can choose to `keep`, `drop`, or `redact` any of the standard request fields. A complete list of available fields like `ClientHost`, `RequestMethod`, and `Duration` can be found in the [reference documentation](../reference/install-configuration/observability/logs-and-accesslogs.md#json-format-fields).
|
||||||
- **Request Headers:** You can also specify which request headers should be included in the logs, and whether their values should be `kept`, `dropped`, or `redacted`.
|
- **Request Headers:** You can also specify which request headers should be included in the logs, and whether their values should be `kept`, `dropped`, or `redacted`.
|
||||||
|
|
||||||
!!! info
|
!!! info
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ And then define a routing configuration on Traefik itself with the
|
|||||||
|
|
||||||
--8<-- "content/operations/include-api-examples.md"
|
--8<-- "content/operations/include-api-examples.md"
|
||||||
|
|
||||||
??? warning "The router's [rule](../../routing/routers#rule) must catch requests for the URI path `/api`"
|
??? warning "The router's [rule](../routing/routers/index.md#rule) must catch requests for the URI path `/api`"
|
||||||
Using an "Host" rule is recommended, by catching all the incoming traffic on this host domain to the API.
|
Using an "Host" rule is recommended, by catching all the incoming traffic on this host domain to the API.
|
||||||
However, you can also use "path prefix" rule or any combination or rules.
|
However, you can also use "path prefix" rule or any combination or rules.
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ api:
|
|||||||
--api.dashboard=true
|
--api.dashboard=true
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! warning "With Dashboard enabled, the router [rule](../../routing/routers#rule) must catch requests for both `/api` and `/dashboard`"
|
!!! warning "With Dashboard enabled, the router [rule](../routing/routers/index.md#rule) must catch requests for both `/api` and `/dashboard`"
|
||||||
Please check the [Dashboard documentation](./dashboard.md#dashboard-router-rule) to learn more about this and to get examples.
|
Please check the [Dashboard documentation](./dashboard.md#dashboard-router-rule) to learn more about this and to get examples.
|
||||||
|
|
||||||
### `debug`
|
### `debug`
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ traefik [--flag=flag_argument] [-f [flag_argument]]
|
|||||||
traefik [--flag[=true|false| ]] [-f [true|false| ]]
|
traefik [--flag[=true|false| ]] [-f [true|false| ]]
|
||||||
```
|
```
|
||||||
|
|
||||||
All flags are documented in the [(static configuration) CLI reference](../reference/static-configuration/cli.md).
|
All flags are documented in the [(static configuration) CLI reference](../reference/install-configuration/configuration-options.md).
|
||||||
|
|
||||||
!!! info "Flags are case-insensitive."
|
!!! info "Flags are case-insensitive."
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ See What's Going On
|
|||||||
The dashboard is the central place that shows you the current active routes handled by Traefik.
|
The dashboard is the central place that shows you the current active routes handled by Traefik.
|
||||||
|
|
||||||
<figure>
|
<figure>
|
||||||
<img src="../../assets/img/webui-dashboard.png" alt="Dashboard - Providers" />
|
<img src="../assets/img/webui-dashboard.png" alt="Dashboard - Providers" />
|
||||||
<figcaption>The dashboard in action</figcaption>
|
<figcaption>The dashboard in action</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
|
|
||||||
|
|||||||
@@ -477,7 +477,7 @@ _Optional, Default=true_
|
|||||||
Expose Consul Catalog services by default in Traefik.
|
Expose Consul Catalog services by default in Traefik.
|
||||||
If set to `false`, services that don't have a `traefik.enable=true` tag will be ignored from the resulting routing configuration.
|
If set to `false`, services that don't have a `traefik.enable=true` tag will be ignored from the resulting routing configuration.
|
||||||
|
|
||||||
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#exposedbydefault-and-traefikenable).
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
@@ -672,7 +672,7 @@ providers:
|
|||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
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#exposedbydefault-and-traefikenable).
|
||||||
|
|
||||||
### `namespaces`
|
### `namespaces`
|
||||||
|
|
||||||
|
|||||||
@@ -380,7 +380,7 @@ _Optional, Default=true_
|
|||||||
Expose containers by default through Traefik.
|
Expose containers by default through Traefik.
|
||||||
If set to `false`, containers that do not have a `traefik.enable=true` label are ignored from the resulting routing configuration.
|
If set to `false`, containers that do not have a `traefik.enable=true` label are ignored from the resulting routing configuration.
|
||||||
|
|
||||||
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#exposedbydefault-and-traefikenable).
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
@@ -554,7 +554,7 @@ as well as the usual boolean logic, as shown in examples below.
|
|||||||
constraints = "LabelRegex(`a.label.name`, `a.+`)"
|
constraints = "LabelRegex(`a.label.name`, `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#exposedbydefault-and-traefikenable).
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ as well as the usual boolean logic, as shown in examples below.
|
|||||||
constraints = "LabelRegex(`a.label.name`, `a.+`)"
|
constraints = "LabelRegex(`a.label.name`, `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#exposedbydefault-and-traefikenable).
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ It supports providing configuration through a [single configuration file](#filen
|
|||||||
|
|
||||||
## 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 [routing configuration](../reference/routing-configuration/other-providers/file.md) and [install configuration](../reference/install-configuration/configuration-options.md) references.
|
||||||
|
|
||||||
!!! warning "Limitations"
|
!!! warning "Limitations"
|
||||||
|
|
||||||
|
|||||||
@@ -384,7 +384,7 @@ _Optional, Default=true_
|
|||||||
Expose Nomad services by default in Traefik.
|
Expose Nomad services by default in Traefik.
|
||||||
If set to `false`, services that do not have a `traefik.enable=true` tag will be ignored from the resulting routing configuration.
|
If set to `false`, services that do not have a `traefik.enable=true` tag will be ignored from the resulting routing configuration.
|
||||||
|
|
||||||
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#exposedbydefault-and-traefikenable).
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
@@ -504,7 +504,7 @@ providers:
|
|||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
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#exposedbydefault-and-traefikenable).
|
||||||
|
|
||||||
### `namespaces`
|
### `namespaces`
|
||||||
|
|
||||||
|
|||||||
@@ -424,7 +424,7 @@ _Optional, Default=true_
|
|||||||
Expose containers by default through Traefik.
|
Expose containers by default through Traefik.
|
||||||
If set to `false`, containers that do not have a `traefik.enable=true` label are ignored from the resulting routing configuration.
|
If set to `false`, containers that do not have a `traefik.enable=true` label are ignored from the resulting routing configuration.
|
||||||
|
|
||||||
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#exposedbydefault-and-traefikenable).
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
@@ -621,7 +621,7 @@ as well as the usual boolean logic, as shown in examples below.
|
|||||||
constraints = "LabelRegex(`a.label.name`, `a.+`)"
|
constraints = "LabelRegex(`a.label.name`, `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#exposedbydefault-and-traefikenable).
|
||||||
|
|
||||||
```yaml tab="File (YAML)"
|
```yaml tab="File (YAML)"
|
||||||
providers:
|
providers:
|
||||||
|
|||||||
@@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Traefik Consul Configuration Documentation"
|
|
||||||
description: "View the reference for performing dynamic configurations with Traefik Proxy and Consul Catalog. Read the technical documentation."
|
|
||||||
---
|
|
||||||
|
|
||||||
# Consul Catalog Configuration Reference
|
|
||||||
|
|
||||||
Dynamic configuration with Consul Catalog
|
|
||||||
{: .subtitle }
|
|
||||||
|
|
||||||
The labels are case-insensitive.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
--8<-- "content/reference/dynamic-configuration/consul-catalog.yml"
|
|
||||||
--8<-- "content/reference/dynamic-configuration/docker-labels.yml"
|
|
||||||
```
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.consulcatalog.connect=true"
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Traefik Docker Configuration Documentation"
|
|
||||||
description: "Reference dynamic configuration with Docker labels in Traefik Proxy. Read the technical documentation."
|
|
||||||
---
|
|
||||||
|
|
||||||
# Docker Configuration Reference
|
|
||||||
|
|
||||||
Dynamic configuration with Docker Labels
|
|
||||||
{: .subtitle }
|
|
||||||
|
|
||||||
The labels are case-insensitive.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
labels:
|
|
||||||
--8<-- "content/reference/dynamic-configuration/docker.yml"
|
|
||||||
--8<-- "content/reference/dynamic-configuration/docker-labels.yml"
|
|
||||||
```
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.docker.network=foobar"
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Traefik AWS ECS Configuration Documentation"
|
|
||||||
description: "Learn how to do dynamic configuration in Traefik Proxy with AWS ECS. Read the technical documentation."
|
|
||||||
---
|
|
||||||
|
|
||||||
# ECS Configuration Reference
|
|
||||||
|
|
||||||
Dynamic configuration with ECS provider
|
|
||||||
{: .subtitle }
|
|
||||||
|
|
||||||
The labels are case-insensitive.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
--8<-- "content/reference/dynamic-configuration/ecs.yml"
|
|
||||||
--8<-- "content/reference/dynamic-configuration/docker-labels.yml"
|
|
||||||
```
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
- "traefik.enable=true"
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Traefik File Dynamic Configuration"
|
|
||||||
description: "This guide will provide you with the YAML and TOML files for dynamic configuration in Traefik Proxy. Read the technical documentation."
|
|
||||||
---
|
|
||||||
|
|
||||||
# File Configuration Reference
|
|
||||||
|
|
||||||
Dynamic configuration with files
|
|
||||||
{: .subtitle }
|
|
||||||
|
|
||||||
```yml tab="YAML"
|
|
||||||
--8<-- "content/reference/dynamic-configuration/file.yaml"
|
|
||||||
```
|
|
||||||
|
|
||||||
```toml tab="TOML"
|
|
||||||
--8<-- "content/reference/dynamic-configuration/file.toml"
|
|
||||||
```
|
|
||||||
@@ -454,16 +454,16 @@
|
|||||||
[tcp.services.TCPService01.loadBalancer]
|
[tcp.services.TCPService01.loadBalancer]
|
||||||
serversTransport = "foobar"
|
serversTransport = "foobar"
|
||||||
terminationDelay = 42
|
terminationDelay = 42
|
||||||
|
|
||||||
|
[[tcp.services.TCPService01.loadBalancer.servers]]
|
||||||
|
address = "foobar"
|
||||||
|
tls = true
|
||||||
|
|
||||||
|
[[tcp.services.TCPService01.loadBalancer.servers]]
|
||||||
|
address = "foobar"
|
||||||
|
tls = true
|
||||||
[tcp.services.TCPService01.loadBalancer.proxyProtocol]
|
[tcp.services.TCPService01.loadBalancer.proxyProtocol]
|
||||||
version = 42
|
version = 42
|
||||||
|
|
||||||
[[tcp.services.TCPService01.loadBalancer.servers]]
|
|
||||||
address = "foobar"
|
|
||||||
tls = true
|
|
||||||
|
|
||||||
[[tcp.services.TCPService01.loadBalancer.servers]]
|
|
||||||
address = "foobar"
|
|
||||||
tls = true
|
|
||||||
[tcp.services.TCPService02]
|
[tcp.services.TCPService02]
|
||||||
[tcp.services.TCPService02.weighted]
|
[tcp.services.TCPService02.weighted]
|
||||||
|
|
||||||
@@ -489,6 +489,8 @@
|
|||||||
dialKeepAlive = "42s"
|
dialKeepAlive = "42s"
|
||||||
dialTimeout = "42s"
|
dialTimeout = "42s"
|
||||||
terminationDelay = "42s"
|
terminationDelay = "42s"
|
||||||
|
[tcp.serversTransports.TCPServersTransport0.proxyProtocol]
|
||||||
|
version = 42
|
||||||
[tcp.serversTransports.TCPServersTransport0.tls]
|
[tcp.serversTransports.TCPServersTransport0.tls]
|
||||||
serverName = "foobar"
|
serverName = "foobar"
|
||||||
insecureSkipVerify = true
|
insecureSkipVerify = true
|
||||||
@@ -509,6 +511,8 @@
|
|||||||
dialKeepAlive = "42s"
|
dialKeepAlive = "42s"
|
||||||
dialTimeout = "42s"
|
dialTimeout = "42s"
|
||||||
terminationDelay = "42s"
|
terminationDelay = "42s"
|
||||||
|
[tcp.serversTransports.TCPServersTransport1.proxyProtocol]
|
||||||
|
version = 42
|
||||||
[tcp.serversTransports.TCPServersTransport1.tls]
|
[tcp.serversTransports.TCPServersTransport1.tls]
|
||||||
serverName = "foobar"
|
serverName = "foobar"
|
||||||
insecureSkipVerify = true
|
insecureSkipVerify = true
|
||||||
|
|||||||
@@ -518,14 +518,14 @@ tcp:
|
|||||||
services:
|
services:
|
||||||
TCPService01:
|
TCPService01:
|
||||||
loadBalancer:
|
loadBalancer:
|
||||||
proxyProtocol:
|
|
||||||
version: 42
|
|
||||||
servers:
|
servers:
|
||||||
- address: foobar
|
- address: foobar
|
||||||
tls: true
|
tls: true
|
||||||
- address: foobar
|
- address: foobar
|
||||||
tls: true
|
tls: true
|
||||||
serversTransport: foobar
|
serversTransport: foobar
|
||||||
|
proxyProtocol:
|
||||||
|
version: 42
|
||||||
terminationDelay: 42
|
terminationDelay: 42
|
||||||
TCPService02:
|
TCPService02:
|
||||||
weighted:
|
weighted:
|
||||||
@@ -552,6 +552,8 @@ tcp:
|
|||||||
TCPServersTransport0:
|
TCPServersTransport0:
|
||||||
dialKeepAlive: 42s
|
dialKeepAlive: 42s
|
||||||
dialTimeout: 42s
|
dialTimeout: 42s
|
||||||
|
proxyProtocol:
|
||||||
|
version: 42
|
||||||
terminationDelay: 42s
|
terminationDelay: 42s
|
||||||
tls:
|
tls:
|
||||||
serverName: foobar
|
serverName: foobar
|
||||||
@@ -573,6 +575,8 @@ tcp:
|
|||||||
TCPServersTransport1:
|
TCPServersTransport1:
|
||||||
dialKeepAlive: 42s
|
dialKeepAlive: 42s
|
||||||
dialTimeout: 42s
|
dialTimeout: 42s
|
||||||
|
proxyProtocol:
|
||||||
|
version: 42
|
||||||
terminationDelay: 42s
|
terminationDelay: 42s
|
||||||
tls:
|
tls:
|
||||||
serverName: foobar
|
serverName: foobar
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
EntryPoints defines the list of entry point names to bind to.
|
EntryPoints defines the list of entry point names to bind to.
|
||||||
Entry points have to be configured in the static configuration.
|
Entry points have to be configured in the static configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/entrypoints/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/install-configuration/entrypoints/
|
||||||
Default: all.
|
Default: all.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
@@ -64,12 +64,12 @@ spec:
|
|||||||
match:
|
match:
|
||||||
description: |-
|
description: |-
|
||||||
Match defines the router's rule.
|
Match defines the router's rule.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#rule
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/routing/rules-and-priority/
|
||||||
type: string
|
type: string
|
||||||
middlewares:
|
middlewares:
|
||||||
description: |-
|
description: |-
|
||||||
Middlewares defines the list of references to Middleware resources.
|
Middlewares defines the list of references to Middleware resources.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/providers/kubernetes-crd/#kind-middleware
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/kubernetes/crd/http/middleware/
|
||||||
items:
|
items:
|
||||||
description: MiddlewareRef is a reference to a Middleware
|
description: MiddlewareRef is a reference to a Middleware
|
||||||
resource.
|
resource.
|
||||||
@@ -89,7 +89,7 @@ spec:
|
|||||||
observability:
|
observability:
|
||||||
description: |-
|
description: |-
|
||||||
Observability defines the observability configuration for a router.
|
Observability defines the observability configuration for a router.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#observability
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/routing/observability/
|
||||||
properties:
|
properties:
|
||||||
accessLogs:
|
accessLogs:
|
||||||
description: AccessLogs enables access logs for this router.
|
description: AccessLogs enables access logs for this router.
|
||||||
@@ -112,7 +112,7 @@ spec:
|
|||||||
priority:
|
priority:
|
||||||
description: |-
|
description: |-
|
||||||
Priority defines the router's priority.
|
Priority defines the router's priority.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#priority
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/routing/rules-and-priority/#priority
|
||||||
maximum: 9223372036854775000
|
maximum: 9223372036854775000
|
||||||
type: integer
|
type: integer
|
||||||
services:
|
services:
|
||||||
@@ -263,7 +263,7 @@ spec:
|
|||||||
sticky:
|
sticky:
|
||||||
description: |-
|
description: |-
|
||||||
Sticky defines the sticky sessions configuration.
|
Sticky defines the sticky sessions configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/services/#sticky-sessions
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
|
||||||
properties:
|
properties:
|
||||||
cookie:
|
cookie:
|
||||||
description: Cookie defines the sticky cookie configuration.
|
description: Cookie defines the sticky cookie configuration.
|
||||||
@@ -332,7 +332,7 @@ spec:
|
|||||||
syntax:
|
syntax:
|
||||||
description: |-
|
description: |-
|
||||||
Syntax defines the router's rule syntax.
|
Syntax defines the router's rule syntax.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#rulesyntax
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/routing/rules-and-priority/#rulesyntax
|
||||||
Deprecated: Please do not use this field and rewrite the router rules to use the v3 syntax.
|
Deprecated: Please do not use this field and rewrite the router rules to use the v3 syntax.
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
@@ -342,18 +342,18 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
description: |-
|
description: |-
|
||||||
TLS defines the TLS configuration.
|
TLS defines the TLS configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#tls
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/routing/router/#tls
|
||||||
properties:
|
properties:
|
||||||
certResolver:
|
certResolver:
|
||||||
description: |-
|
description: |-
|
||||||
CertResolver defines the name of the certificate resolver to use.
|
CertResolver defines the name of the certificate resolver to use.
|
||||||
Cert resolvers have to be configured in the static configuration.
|
Cert resolvers have to be configured in the static configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/https/acme/#certificate-resolvers
|
More info: https://doc.traefik.io/traefik/v3.5/reference/install-configuration/tls/certificate-resolvers/acme/
|
||||||
type: string
|
type: string
|
||||||
domains:
|
domains:
|
||||||
description: |-
|
description: |-
|
||||||
Domains defines the list of domains that will be used to issue certificates.
|
Domains defines the list of domains that will be used to issue certificates.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#domains
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/tls/tls-certificates/#domains
|
||||||
items:
|
items:
|
||||||
description: Domain holds a domain name with SANs.
|
description: Domain holds a domain name with SANs.
|
||||||
properties:
|
properties:
|
||||||
@@ -372,17 +372,17 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
|
Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
|
||||||
If not defined, the `default` TLSOption is used.
|
If not defined, the `default` TLSOption is used.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/https/tls/#tls-options
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/tls/tls-options/
|
||||||
properties:
|
properties:
|
||||||
name:
|
name:
|
||||||
description: |-
|
description: |-
|
||||||
Name defines the name of the referenced TLSOption.
|
Name defines the name of the referenced TLSOption.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/providers/kubernetes-crd/#kind-tlsoption
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/kubernetes/crd/http/tlsoption/
|
||||||
type: string
|
type: string
|
||||||
namespace:
|
namespace:
|
||||||
description: |-
|
description: |-
|
||||||
Namespace defines the namespace of the referenced TLSOption.
|
Namespace defines the namespace of the referenced TLSOption.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/providers/kubernetes-crd/#kind-tlsoption
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/kubernetes/crd/http/tlsoption/
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
@@ -399,12 +399,12 @@ spec:
|
|||||||
name:
|
name:
|
||||||
description: |-
|
description: |-
|
||||||
Name defines the name of the referenced TLSStore.
|
Name defines the name of the referenced TLSStore.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/providers/kubernetes-crd/#kind-tlsstore
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/kubernetes/crd/http/tlsstore/
|
||||||
type: string
|
type: string
|
||||||
namespace:
|
namespace:
|
||||||
description: |-
|
description: |-
|
||||||
Namespace defines the namespace of the referenced TLSStore.
|
Namespace defines the namespace of the referenced TLSStore.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/providers/kubernetes-crd/#kind-tlsstore
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/kubernetes/crd/http/tlsstore/
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
@@ -464,7 +464,7 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
EntryPoints defines the list of entry point names to bind to.
|
EntryPoints defines the list of entry point names to bind to.
|
||||||
Entry points have to be configured in the static configuration.
|
Entry points have to be configured in the static configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/entrypoints/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/install-configuration/entrypoints/
|
||||||
Default: all.
|
Default: all.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
@@ -477,7 +477,7 @@ spec:
|
|||||||
match:
|
match:
|
||||||
description: |-
|
description: |-
|
||||||
Match defines the router's rule.
|
Match defines the router's rule.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#rule_1
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/routing/rules-and-priority/
|
||||||
type: string
|
type: string
|
||||||
middlewares:
|
middlewares:
|
||||||
description: Middlewares defines the list of references to MiddlewareTCP
|
description: Middlewares defines the list of references to MiddlewareTCP
|
||||||
@@ -501,7 +501,7 @@ spec:
|
|||||||
priority:
|
priority:
|
||||||
description: |-
|
description: |-
|
||||||
Priority defines the router's priority.
|
Priority defines the router's priority.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#priority_1
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/routing/rules-and-priority/#priority
|
||||||
maximum: 9223372036854775000
|
maximum: 9223372036854775000
|
||||||
type: integer
|
type: integer
|
||||||
services:
|
services:
|
||||||
@@ -543,7 +543,8 @@ spec:
|
|||||||
proxyProtocol:
|
proxyProtocol:
|
||||||
description: |-
|
description: |-
|
||||||
ProxyProtocol defines the PROXY protocol configuration.
|
ProxyProtocol defines the PROXY protocol configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/services/#proxy-protocol
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/service/#proxy-protocol
|
||||||
|
Deprecated: ProxyProtocol will not be supported in future APIVersions, please use ServersTransport to configure ProxyProtocol instead.
|
||||||
properties:
|
properties:
|
||||||
version:
|
version:
|
||||||
description: Version defines the PROXY Protocol version
|
description: Version defines the PROXY Protocol version
|
||||||
@@ -584,7 +585,7 @@ spec:
|
|||||||
syntax:
|
syntax:
|
||||||
description: |-
|
description: |-
|
||||||
Syntax defines the router's rule syntax.
|
Syntax defines the router's rule syntax.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#rulesyntax_1
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/routing/rules-and-priority/#rulesyntax
|
||||||
Deprecated: Please do not use this field and rewrite the router rules to use the v3 syntax.
|
Deprecated: Please do not use this field and rewrite the router rules to use the v3 syntax.
|
||||||
enum:
|
enum:
|
||||||
- v3
|
- v3
|
||||||
@@ -597,18 +598,18 @@ spec:
|
|||||||
tls:
|
tls:
|
||||||
description: |-
|
description: |-
|
||||||
TLS defines the TLS configuration on a layer 4 / TCP Route.
|
TLS defines the TLS configuration on a layer 4 / TCP Route.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#tls_1
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/routing/router/#tls
|
||||||
properties:
|
properties:
|
||||||
certResolver:
|
certResolver:
|
||||||
description: |-
|
description: |-
|
||||||
CertResolver defines the name of the certificate resolver to use.
|
CertResolver defines the name of the certificate resolver to use.
|
||||||
Cert resolvers have to be configured in the static configuration.
|
Cert resolvers have to be configured in the static configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/https/acme/#certificate-resolvers
|
More info: https://doc.traefik.io/traefik/v3.5/reference/install-configuration/tls/certificate-resolvers/acme/
|
||||||
type: string
|
type: string
|
||||||
domains:
|
domains:
|
||||||
description: |-
|
description: |-
|
||||||
Domains defines the list of domains that will be used to issue certificates.
|
Domains defines the list of domains that will be used to issue certificates.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/routers/#domains
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/tls/#domains
|
||||||
items:
|
items:
|
||||||
description: Domain holds a domain name with SANs.
|
description: Domain holds a domain name with SANs.
|
||||||
properties:
|
properties:
|
||||||
@@ -627,7 +628,7 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
|
Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection.
|
||||||
If not defined, the `default` TLSOption is used.
|
If not defined, the `default` TLSOption is used.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/https/tls/#tls-options
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/tls/#tls-options
|
||||||
properties:
|
properties:
|
||||||
name:
|
name:
|
||||||
description: Name defines the name of the referenced Traefik
|
description: Name defines the name of the referenced Traefik
|
||||||
@@ -719,7 +720,7 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
EntryPoints defines the list of entry point names to bind to.
|
EntryPoints defines the list of entry point names to bind to.
|
||||||
Entry points have to be configured in the static configuration.
|
Entry points have to be configured in the static configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/entrypoints/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/install-configuration/entrypoints/
|
||||||
Default: all.
|
Default: all.
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
@@ -807,7 +808,7 @@ spec:
|
|||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: |-
|
description: |-
|
||||||
Middleware is the CRD implementation of a Traefik Middleware.
|
Middleware is the CRD implementation of a Traefik Middleware.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/overview/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/overview/
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -848,12 +849,12 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
BasicAuth holds the basic auth middleware configuration.
|
BasicAuth holds the basic auth middleware configuration.
|
||||||
This middleware restricts access to your services to known users.
|
This middleware restricts access to your services to known users.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/basicauth/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/basicauth/
|
||||||
properties:
|
properties:
|
||||||
headerField:
|
headerField:
|
||||||
description: |-
|
description: |-
|
||||||
HeaderField defines a header field to store the authenticated user.
|
HeaderField defines a header field to store the authenticated user.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/basicauth/#headerfield
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/basicauth/#headerfield
|
||||||
type: string
|
type: string
|
||||||
realm:
|
realm:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -913,7 +914,7 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
Chain holds the configuration of the chain middleware.
|
Chain holds the configuration of the chain middleware.
|
||||||
This middleware enables to define reusable combinations of other pieces of middleware.
|
This middleware enables to define reusable combinations of other pieces of middleware.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/chain/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/chain/
|
||||||
properties:
|
properties:
|
||||||
middlewares:
|
middlewares:
|
||||||
description: Middlewares is the list of MiddlewareRef which composes
|
description: Middlewares is the list of MiddlewareRef which composes
|
||||||
@@ -976,7 +977,7 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
Compress holds the compress middleware configuration.
|
Compress holds the compress middleware configuration.
|
||||||
This middleware compresses responses before sending them to the client, using gzip, brotli, or zstd compression.
|
This middleware compresses responses before sending them to the client, using gzip, brotli, or zstd compression.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/compress/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/compress/
|
||||||
properties:
|
properties:
|
||||||
defaultEncoding:
|
defaultEncoding:
|
||||||
description: DefaultEncoding specifies the default encoding if
|
description: DefaultEncoding specifies the default encoding if
|
||||||
@@ -1026,12 +1027,12 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
DigestAuth holds the digest auth middleware configuration.
|
DigestAuth holds the digest auth middleware configuration.
|
||||||
This middleware restricts access to your services to known users.
|
This middleware restricts access to your services to known users.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/digestauth/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/digestauth/
|
||||||
properties:
|
properties:
|
||||||
headerField:
|
headerField:
|
||||||
description: |-
|
description: |-
|
||||||
HeaderField defines a header field to store the authenticated user.
|
HeaderField defines a header field to store the authenticated user.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/basicauth/#headerfield
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/digestauth/#headerfield
|
||||||
type: string
|
type: string
|
||||||
realm:
|
realm:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -1051,7 +1052,7 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
ErrorPage holds the custom error middleware configuration.
|
ErrorPage holds the custom error middleware configuration.
|
||||||
This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes.
|
This middleware returns a custom page in lieu of the default, according to configured ranges of HTTP Status codes.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/errorpages/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/errorpages/
|
||||||
properties:
|
properties:
|
||||||
query:
|
query:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -1063,7 +1064,7 @@ spec:
|
|||||||
service:
|
service:
|
||||||
description: |-
|
description: |-
|
||||||
Service defines the reference to a Kubernetes Service that will serve the error page.
|
Service defines the reference to a Kubernetes Service that will serve the error page.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/errorpages/#service
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/errorpages/#service
|
||||||
properties:
|
properties:
|
||||||
healthCheck:
|
healthCheck:
|
||||||
description: Healthcheck defines health checks for ExternalName
|
description: Healthcheck defines health checks for ExternalName
|
||||||
@@ -1205,7 +1206,7 @@ spec:
|
|||||||
sticky:
|
sticky:
|
||||||
description: |-
|
description: |-
|
||||||
Sticky defines the sticky sessions configuration.
|
Sticky defines the sticky sessions configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/services/#sticky-sessions
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
|
||||||
properties:
|
properties:
|
||||||
cookie:
|
cookie:
|
||||||
description: Cookie defines the sticky cookie configuration.
|
description: Cookie defines the sticky cookie configuration.
|
||||||
@@ -1292,7 +1293,7 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
ForwardAuth holds the forward auth middleware configuration.
|
ForwardAuth holds the forward auth middleware configuration.
|
||||||
This middleware delegates the request authentication to a Service.
|
This middleware delegates the request authentication to a Service.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/forwardauth/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/forwardauth/
|
||||||
properties:
|
properties:
|
||||||
addAuthCookiesToResponse:
|
addAuthCookiesToResponse:
|
||||||
description: AddAuthCookiesToResponse defines the list of cookies
|
description: AddAuthCookiesToResponse defines the list of cookies
|
||||||
@@ -1320,7 +1321,7 @@ spec:
|
|||||||
authResponseHeadersRegex:
|
authResponseHeadersRegex:
|
||||||
description: |-
|
description: |-
|
||||||
AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex.
|
AuthResponseHeadersRegex defines the regex to match headers to copy from the authentication server response and set on forwarded request, after stripping all headers that match the regex.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/forwardauth/#authresponseheadersregex
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/forwardauth/#authresponseheadersregex
|
||||||
type: string
|
type: string
|
||||||
forwardBody:
|
forwardBody:
|
||||||
description: ForwardBody defines whether to send the request body
|
description: ForwardBody defines whether to send the request body
|
||||||
@@ -1329,7 +1330,7 @@ spec:
|
|||||||
headerField:
|
headerField:
|
||||||
description: |-
|
description: |-
|
||||||
HeaderField defines a header field to store the authenticated user.
|
HeaderField defines a header field to store the authenticated user.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/forwardauth/#headerfield
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/forwardauth/#headerfield
|
||||||
type: string
|
type: string
|
||||||
maxBodySize:
|
maxBodySize:
|
||||||
description: MaxBodySize defines the maximum body size in bytes
|
description: MaxBodySize defines the maximum body size in bytes
|
||||||
@@ -1795,13 +1796,13 @@ spec:
|
|||||||
x-kubernetes-preserve-unknown-fields: true
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
description: |-
|
description: |-
|
||||||
Plugin defines the middleware plugin configuration.
|
Plugin defines the middleware plugin configuration.
|
||||||
More info: https://doc.traefik.io/traefik/plugins/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/overview/#community-middlewares
|
||||||
type: object
|
type: object
|
||||||
rateLimit:
|
rateLimit:
|
||||||
description: |-
|
description: |-
|
||||||
RateLimit holds the rate limit configuration.
|
RateLimit holds the rate limit configuration.
|
||||||
This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is.
|
This middleware ensures that services will receive a fair amount of requests, and allows one to define what fair is.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/ratelimit/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/ratelimit/
|
||||||
properties:
|
properties:
|
||||||
average:
|
average:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -2019,7 +2020,7 @@ spec:
|
|||||||
Retry holds the retry middleware configuration.
|
Retry holds the retry middleware configuration.
|
||||||
This middleware reissues requests a given number of times to a backend server if that server does not reply.
|
This middleware reissues requests a given number of times to a backend server if that server does not reply.
|
||||||
As soon as the server answers, the middleware stops retrying, regardless of the response status.
|
As soon as the server answers, the middleware stops retrying, regardless of the response status.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/http/retry/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/middlewares/retry/
|
||||||
properties:
|
properties:
|
||||||
attempts:
|
attempts:
|
||||||
description: Attempts defines how many times the request should
|
description: Attempts defines how many times the request should
|
||||||
@@ -2099,7 +2100,7 @@ spec:
|
|||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: |-
|
description: |-
|
||||||
MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
|
MiddlewareTCP is the CRD implementation of a Traefik TCP middleware.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/overview/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/middlewares/overview/
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -2136,7 +2137,7 @@ spec:
|
|||||||
description: |-
|
description: |-
|
||||||
IPAllowList defines the IPAllowList middleware configuration.
|
IPAllowList defines the IPAllowList middleware configuration.
|
||||||
This middleware accepts/refuses connections based on the client IP.
|
This middleware accepts/refuses connections based on the client IP.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/tcp/ipallowlist/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/middlewares/ipallowlist/
|
||||||
properties:
|
properties:
|
||||||
sourceRange:
|
sourceRange:
|
||||||
description: SourceRange defines the allowed IPs (or ranges of
|
description: SourceRange defines the allowed IPs (or ranges of
|
||||||
@@ -2150,7 +2151,7 @@ spec:
|
|||||||
IPWhiteList defines the IPWhiteList middleware configuration.
|
IPWhiteList defines the IPWhiteList middleware configuration.
|
||||||
This middleware accepts/refuses connections based on the client IP.
|
This middleware accepts/refuses connections based on the client IP.
|
||||||
Deprecated: please use IPAllowList instead.
|
Deprecated: please use IPAllowList instead.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/middlewares/tcp/ipwhitelist/
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/middlewares/ipwhitelist/
|
||||||
properties:
|
properties:
|
||||||
sourceRange:
|
sourceRange:
|
||||||
description: SourceRange defines the allowed IPs (or ranges of
|
description: SourceRange defines the allowed IPs (or ranges of
|
||||||
@@ -2189,7 +2190,7 @@ spec:
|
|||||||
ServersTransport is the CRD implementation of a ServersTransport.
|
ServersTransport is the CRD implementation of a ServersTransport.
|
||||||
If no serversTransport is specified, the default@internal will be used.
|
If no serversTransport is specified, the default@internal will be used.
|
||||||
The default@internal serversTransport is created from the static configuration.
|
The default@internal serversTransport is created from the static configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/services/#serverstransport_1
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/load-balancing/serverstransport/
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -2275,7 +2276,7 @@ spec:
|
|||||||
maxIdleConnsPerHost:
|
maxIdleConnsPerHost:
|
||||||
description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
|
description: MaxIdleConnsPerHost controls the maximum idle (keep-alive)
|
||||||
to keep per-host.
|
to keep per-host.
|
||||||
minimum: 0
|
minimum: -1
|
||||||
type: integer
|
type: integer
|
||||||
peerCertURI:
|
peerCertURI:
|
||||||
description: PeerCertURI defines the peer cert URI used to match against
|
description: PeerCertURI defines the peer cert URI used to match against
|
||||||
@@ -2358,7 +2359,7 @@ spec:
|
|||||||
ServersTransportTCP is the CRD implementation of a TCPServersTransport.
|
ServersTransportTCP is the CRD implementation of a TCPServersTransport.
|
||||||
If no tcpServersTransport is specified, a default one named default@internal will be used.
|
If no tcpServersTransport is specified, a default one named default@internal will be used.
|
||||||
The default@internal tcpServersTransport can be configured in the static configuration.
|
The default@internal tcpServersTransport can be configured in the static configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/services/#serverstransport_3
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/tcp/serverstransport/
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -2400,6 +2401,15 @@ spec:
|
|||||||
to a backend server can be established.
|
to a backend server can be established.
|
||||||
pattern: ^([0-9]+(ns|us|µs|ms|s|m|h)?)+$
|
pattern: ^([0-9]+(ns|us|µs|ms|s|m|h)?)+$
|
||||||
x-kubernetes-int-or-string: true
|
x-kubernetes-int-or-string: true
|
||||||
|
proxyProtocol:
|
||||||
|
description: ProxyProtocol holds the PROXY Protocol configuration.
|
||||||
|
properties:
|
||||||
|
version:
|
||||||
|
description: Version defines the PROXY Protocol version to use.
|
||||||
|
maximum: 2
|
||||||
|
minimum: 1
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
terminationDelay:
|
terminationDelay:
|
||||||
anyOf:
|
anyOf:
|
||||||
- type: integer
|
- type: integer
|
||||||
@@ -2503,7 +2513,7 @@ spec:
|
|||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
description: |-
|
description: |-
|
||||||
TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection.
|
TLSOption is the CRD implementation of a Traefik TLS Option, allowing to configure some parameters of the TLS connection.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/https/tls/#tls-options
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#tls-options
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -2528,14 +2538,14 @@ spec:
|
|||||||
alpnProtocols:
|
alpnProtocols:
|
||||||
description: |-
|
description: |-
|
||||||
ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference.
|
ALPNProtocols defines the list of supported application level protocols for the TLS handshake, in order of preference.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/https/tls/#alpn-protocols
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#alpn-protocols
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
cipherSuites:
|
cipherSuites:
|
||||||
description: |-
|
description: |-
|
||||||
CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.
|
CipherSuites defines the list of supported cipher suites for TLS versions up to TLS 1.2.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/https/tls/#cipher-suites
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#cipher-suites
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
@@ -2563,7 +2573,7 @@ spec:
|
|||||||
curvePreferences:
|
curvePreferences:
|
||||||
description: |-
|
description: |-
|
||||||
CurvePreferences defines the preferred elliptic curves.
|
CurvePreferences defines the preferred elliptic curves.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/https/tls/#curve-preferences
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#curve-preferences
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
type: array
|
type: array
|
||||||
@@ -2623,7 +2633,7 @@ spec:
|
|||||||
TLSStore is the CRD implementation of a Traefik TLS Store.
|
TLSStore is the CRD implementation of a Traefik TLS Store.
|
||||||
For the time being, only the TLSStore named default is supported.
|
For the time being, only the TLSStore named default is supported.
|
||||||
This means that you cannot have two stores that are named default in different Kubernetes namespaces.
|
This means that you cannot have two stores that are named default in different Kubernetes namespaces.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/https/tls/#certificates-stores
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/tls/tls-certificates/#certificates-stores#certificates-stores
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -2721,7 +2731,7 @@ spec:
|
|||||||
TraefikService object allows to:
|
TraefikService object allows to:
|
||||||
- Apply weight to Services on load-balancing
|
- Apply weight to Services on load-balancing
|
||||||
- Mirror traffic on services
|
- Mirror traffic on services
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/providers/kubernetes-crd/#kind-traefikservice
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/kubernetes/crd/http/traefikservice/
|
||||||
properties:
|
properties:
|
||||||
apiVersion:
|
apiVersion:
|
||||||
description: |-
|
description: |-
|
||||||
@@ -2985,7 +2995,7 @@ spec:
|
|||||||
sticky:
|
sticky:
|
||||||
description: |-
|
description: |-
|
||||||
Sticky defines the sticky sessions configuration.
|
Sticky defines the sticky sessions configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/services/#sticky-sessions
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
|
||||||
properties:
|
properties:
|
||||||
cookie:
|
cookie:
|
||||||
description: Cookie defines the sticky cookie configuration.
|
description: Cookie defines the sticky cookie configuration.
|
||||||
@@ -3113,7 +3123,7 @@ spec:
|
|||||||
sticky:
|
sticky:
|
||||||
description: |-
|
description: |-
|
||||||
Sticky defines the sticky sessions configuration.
|
Sticky defines the sticky sessions configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/services/#sticky-sessions
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
|
||||||
properties:
|
properties:
|
||||||
cookie:
|
cookie:
|
||||||
description: Cookie defines the sticky cookie configuration.
|
description: Cookie defines the sticky cookie configuration.
|
||||||
@@ -3326,7 +3336,7 @@ spec:
|
|||||||
sticky:
|
sticky:
|
||||||
description: |-
|
description: |-
|
||||||
Sticky defines the sticky sessions configuration.
|
Sticky defines the sticky sessions configuration.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/services/#sticky-sessions
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/http/load-balancing/service/#sticky-sessions
|
||||||
properties:
|
properties:
|
||||||
cookie:
|
cookie:
|
||||||
description: Cookie defines the sticky cookie configuration.
|
description: Cookie defines the sticky cookie configuration.
|
||||||
@@ -3394,7 +3404,7 @@ spec:
|
|||||||
sticky:
|
sticky:
|
||||||
description: |-
|
description: |-
|
||||||
Sticky defines whether sticky sessions are enabled.
|
Sticky defines whether sticky sessions are enabled.
|
||||||
More info: https://doc.traefik.io/traefik/v3.5/routing/providers/kubernetes-crd/#stickiness-and-load-balancing
|
More info: https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/kubernetes/crd/http/traefikservice/#stickiness-and-load-balancing
|
||||||
properties:
|
properties:
|
||||||
cookie:
|
cookie:
|
||||||
description: Cookie defines the sticky cookie configuration.
|
description: Cookie defines the sticky cookie configuration.
|
||||||
|
|||||||
@@ -5,462 +5,464 @@ THIS FILE MUST NOT BE EDITED BY HAND
|
|||||||
|
|
||||||
| Key (Path) | Value |
|
| Key (Path) | Value |
|
||||||
|------------|-------|
|
|------------|-------|
|
||||||
| `traefik/http/middlewares/Middleware01/addPrefix/prefix` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware01addPrefixprefix" href="#opt-traefikhttpmiddlewaresMiddleware01addPrefixprefix" title="#opt-traefikhttpmiddlewaresMiddleware01addPrefixprefix">`traefik/http/middlewares/Middleware01/addPrefix/prefix`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware02/basicAuth/headerField` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware02basicAuthheaderField" href="#opt-traefikhttpmiddlewaresMiddleware02basicAuthheaderField" title="#opt-traefikhttpmiddlewaresMiddleware02basicAuthheaderField">`traefik/http/middlewares/Middleware02/basicAuth/headerField`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware02/basicAuth/realm` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware02basicAuthrealm" href="#opt-traefikhttpmiddlewaresMiddleware02basicAuthrealm" title="#opt-traefikhttpmiddlewaresMiddleware02basicAuthrealm">`traefik/http/middlewares/Middleware02/basicAuth/realm`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware02/basicAuth/removeHeader` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware02basicAuthremoveHeader" href="#opt-traefikhttpmiddlewaresMiddleware02basicAuthremoveHeader" title="#opt-traefikhttpmiddlewaresMiddleware02basicAuthremoveHeader">`traefik/http/middlewares/Middleware02/basicAuth/removeHeader`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware02/basicAuth/users/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware02basicAuthusers0" href="#opt-traefikhttpmiddlewaresMiddleware02basicAuthusers0" title="#opt-traefikhttpmiddlewaresMiddleware02basicAuthusers0">`traefik/http/middlewares/Middleware02/basicAuth/users/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware02/basicAuth/users/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware02basicAuthusers1" href="#opt-traefikhttpmiddlewaresMiddleware02basicAuthusers1" title="#opt-traefikhttpmiddlewaresMiddleware02basicAuthusers1">`traefik/http/middlewares/Middleware02/basicAuth/users/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware02/basicAuth/usersFile` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware02basicAuthusersFile" href="#opt-traefikhttpmiddlewaresMiddleware02basicAuthusersFile" title="#opt-traefikhttpmiddlewaresMiddleware02basicAuthusersFile">`traefik/http/middlewares/Middleware02/basicAuth/usersFile`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware03/buffering/maxRequestBodyBytes` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware03bufferingmaxRequestBodyBytes" href="#opt-traefikhttpmiddlewaresMiddleware03bufferingmaxRequestBodyBytes" title="#opt-traefikhttpmiddlewaresMiddleware03bufferingmaxRequestBodyBytes">`traefik/http/middlewares/Middleware03/buffering/maxRequestBodyBytes`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware03/buffering/maxResponseBodyBytes` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware03bufferingmaxResponseBodyBytes" href="#opt-traefikhttpmiddlewaresMiddleware03bufferingmaxResponseBodyBytes" title="#opt-traefikhttpmiddlewaresMiddleware03bufferingmaxResponseBodyBytes">`traefik/http/middlewares/Middleware03/buffering/maxResponseBodyBytes`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware03/buffering/memRequestBodyBytes` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware03bufferingmemRequestBodyBytes" href="#opt-traefikhttpmiddlewaresMiddleware03bufferingmemRequestBodyBytes" title="#opt-traefikhttpmiddlewaresMiddleware03bufferingmemRequestBodyBytes">`traefik/http/middlewares/Middleware03/buffering/memRequestBodyBytes`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware03/buffering/memResponseBodyBytes` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware03bufferingmemResponseBodyBytes" href="#opt-traefikhttpmiddlewaresMiddleware03bufferingmemResponseBodyBytes" title="#opt-traefikhttpmiddlewaresMiddleware03bufferingmemResponseBodyBytes">`traefik/http/middlewares/Middleware03/buffering/memResponseBodyBytes`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware03/buffering/retryExpression` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware03bufferingretryExpression" href="#opt-traefikhttpmiddlewaresMiddleware03bufferingretryExpression" title="#opt-traefikhttpmiddlewaresMiddleware03bufferingretryExpression">`traefik/http/middlewares/Middleware03/buffering/retryExpression`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware04/chain/middlewares/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware04chainmiddlewares0" href="#opt-traefikhttpmiddlewaresMiddleware04chainmiddlewares0" title="#opt-traefikhttpmiddlewaresMiddleware04chainmiddlewares0">`traefik/http/middlewares/Middleware04/chain/middlewares/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware04/chain/middlewares/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware04chainmiddlewares1" href="#opt-traefikhttpmiddlewaresMiddleware04chainmiddlewares1" title="#opt-traefikhttpmiddlewaresMiddleware04chainmiddlewares1">`traefik/http/middlewares/Middleware04/chain/middlewares/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware05/circuitBreaker/checkPeriod` | `42s` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware05circuitBreakercheckPeriod" href="#opt-traefikhttpmiddlewaresMiddleware05circuitBreakercheckPeriod" title="#opt-traefikhttpmiddlewaresMiddleware05circuitBreakercheckPeriod">`traefik/http/middlewares/Middleware05/circuitBreaker/checkPeriod`</a> | `42s` |
|
||||||
| `traefik/http/middlewares/Middleware05/circuitBreaker/expression` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware05circuitBreakerexpression" href="#opt-traefikhttpmiddlewaresMiddleware05circuitBreakerexpression" title="#opt-traefikhttpmiddlewaresMiddleware05circuitBreakerexpression">`traefik/http/middlewares/Middleware05/circuitBreaker/expression`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware05/circuitBreaker/fallbackDuration` | `42s` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware05circuitBreakerfallbackDuration" href="#opt-traefikhttpmiddlewaresMiddleware05circuitBreakerfallbackDuration" title="#opt-traefikhttpmiddlewaresMiddleware05circuitBreakerfallbackDuration">`traefik/http/middlewares/Middleware05/circuitBreaker/fallbackDuration`</a> | `42s` |
|
||||||
| `traefik/http/middlewares/Middleware05/circuitBreaker/recoveryDuration` | `42s` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware05circuitBreakerrecoveryDuration" href="#opt-traefikhttpmiddlewaresMiddleware05circuitBreakerrecoveryDuration" title="#opt-traefikhttpmiddlewaresMiddleware05circuitBreakerrecoveryDuration">`traefik/http/middlewares/Middleware05/circuitBreaker/recoveryDuration`</a> | `42s` |
|
||||||
| `traefik/http/middlewares/Middleware05/circuitBreaker/responseCode` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware05circuitBreakerresponseCode" href="#opt-traefikhttpmiddlewaresMiddleware05circuitBreakerresponseCode" title="#opt-traefikhttpmiddlewaresMiddleware05circuitBreakerresponseCode">`traefik/http/middlewares/Middleware05/circuitBreaker/responseCode`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware06/compress/defaultEncoding` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware06compressdefaultEncoding" href="#opt-traefikhttpmiddlewaresMiddleware06compressdefaultEncoding" title="#opt-traefikhttpmiddlewaresMiddleware06compressdefaultEncoding">`traefik/http/middlewares/Middleware06/compress/defaultEncoding`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware06/compress/encodings/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware06compressencodings0" href="#opt-traefikhttpmiddlewaresMiddleware06compressencodings0" title="#opt-traefikhttpmiddlewaresMiddleware06compressencodings0">`traefik/http/middlewares/Middleware06/compress/encodings/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware06/compress/encodings/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware06compressencodings1" href="#opt-traefikhttpmiddlewaresMiddleware06compressencodings1" title="#opt-traefikhttpmiddlewaresMiddleware06compressencodings1">`traefik/http/middlewares/Middleware06/compress/encodings/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware06/compress/excludedContentTypes/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware06compressexcludedContentTypes0" href="#opt-traefikhttpmiddlewaresMiddleware06compressexcludedContentTypes0" title="#opt-traefikhttpmiddlewaresMiddleware06compressexcludedContentTypes0">`traefik/http/middlewares/Middleware06/compress/excludedContentTypes/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware06/compress/excludedContentTypes/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware06compressexcludedContentTypes1" href="#opt-traefikhttpmiddlewaresMiddleware06compressexcludedContentTypes1" title="#opt-traefikhttpmiddlewaresMiddleware06compressexcludedContentTypes1">`traefik/http/middlewares/Middleware06/compress/excludedContentTypes/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware06/compress/includedContentTypes/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware06compressincludedContentTypes0" href="#opt-traefikhttpmiddlewaresMiddleware06compressincludedContentTypes0" title="#opt-traefikhttpmiddlewaresMiddleware06compressincludedContentTypes0">`traefik/http/middlewares/Middleware06/compress/includedContentTypes/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware06/compress/includedContentTypes/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware06compressincludedContentTypes1" href="#opt-traefikhttpmiddlewaresMiddleware06compressincludedContentTypes1" title="#opt-traefikhttpmiddlewaresMiddleware06compressincludedContentTypes1">`traefik/http/middlewares/Middleware06/compress/includedContentTypes/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware06/compress/minResponseBodyBytes` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware06compressminResponseBodyBytes" href="#opt-traefikhttpmiddlewaresMiddleware06compressminResponseBodyBytes" title="#opt-traefikhttpmiddlewaresMiddleware06compressminResponseBodyBytes">`traefik/http/middlewares/Middleware06/compress/minResponseBodyBytes`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware07/contentType/autoDetect` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware07contentTypeautoDetect" href="#opt-traefikhttpmiddlewaresMiddleware07contentTypeautoDetect" title="#opt-traefikhttpmiddlewaresMiddleware07contentTypeautoDetect">`traefik/http/middlewares/Middleware07/contentType/autoDetect`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware08/digestAuth/headerField` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware08digestAuthheaderField" href="#opt-traefikhttpmiddlewaresMiddleware08digestAuthheaderField" title="#opt-traefikhttpmiddlewaresMiddleware08digestAuthheaderField">`traefik/http/middlewares/Middleware08/digestAuth/headerField`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware08/digestAuth/realm` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware08digestAuthrealm" href="#opt-traefikhttpmiddlewaresMiddleware08digestAuthrealm" title="#opt-traefikhttpmiddlewaresMiddleware08digestAuthrealm">`traefik/http/middlewares/Middleware08/digestAuth/realm`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware08/digestAuth/removeHeader` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware08digestAuthremoveHeader" href="#opt-traefikhttpmiddlewaresMiddleware08digestAuthremoveHeader" title="#opt-traefikhttpmiddlewaresMiddleware08digestAuthremoveHeader">`traefik/http/middlewares/Middleware08/digestAuth/removeHeader`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware08/digestAuth/users/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware08digestAuthusers0" href="#opt-traefikhttpmiddlewaresMiddleware08digestAuthusers0" title="#opt-traefikhttpmiddlewaresMiddleware08digestAuthusers0">`traefik/http/middlewares/Middleware08/digestAuth/users/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware08/digestAuth/users/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware08digestAuthusers1" href="#opt-traefikhttpmiddlewaresMiddleware08digestAuthusers1" title="#opt-traefikhttpmiddlewaresMiddleware08digestAuthusers1">`traefik/http/middlewares/Middleware08/digestAuth/users/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware08/digestAuth/usersFile` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware08digestAuthusersFile" href="#opt-traefikhttpmiddlewaresMiddleware08digestAuthusersFile" title="#opt-traefikhttpmiddlewaresMiddleware08digestAuthusersFile">`traefik/http/middlewares/Middleware08/digestAuth/usersFile`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware09/errors/query` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware09errorsquery" href="#opt-traefikhttpmiddlewaresMiddleware09errorsquery" title="#opt-traefikhttpmiddlewaresMiddleware09errorsquery">`traefik/http/middlewares/Middleware09/errors/query`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware09/errors/service` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware09errorsservice" href="#opt-traefikhttpmiddlewaresMiddleware09errorsservice" title="#opt-traefikhttpmiddlewaresMiddleware09errorsservice">`traefik/http/middlewares/Middleware09/errors/service`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware09/errors/status/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware09errorsstatus0" href="#opt-traefikhttpmiddlewaresMiddleware09errorsstatus0" title="#opt-traefikhttpmiddlewaresMiddleware09errorsstatus0">`traefik/http/middlewares/Middleware09/errors/status/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware09/errors/status/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware09errorsstatus1" href="#opt-traefikhttpmiddlewaresMiddleware09errorsstatus1" title="#opt-traefikhttpmiddlewaresMiddleware09errorsstatus1">`traefik/http/middlewares/Middleware09/errors/status/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware09/errors/statusRewrites/name0` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware09errorsstatusRewritesname0" href="#opt-traefikhttpmiddlewaresMiddleware09errorsstatusRewritesname0" title="#opt-traefikhttpmiddlewaresMiddleware09errorsstatusRewritesname0">`traefik/http/middlewares/Middleware09/errors/statusRewrites/name0`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware09/errors/statusRewrites/name1` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware09errorsstatusRewritesname1" href="#opt-traefikhttpmiddlewaresMiddleware09errorsstatusRewritesname1" title="#opt-traefikhttpmiddlewaresMiddleware09errorsstatusRewritesname1">`traefik/http/middlewares/Middleware09/errors/statusRewrites/name1`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/addAuthCookiesToResponse/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthaddAuthCookiesToResponse0" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthaddAuthCookiesToResponse0" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthaddAuthCookiesToResponse0">`traefik/http/middlewares/Middleware10/forwardAuth/addAuthCookiesToResponse/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/addAuthCookiesToResponse/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthaddAuthCookiesToResponse1" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthaddAuthCookiesToResponse1" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthaddAuthCookiesToResponse1">`traefik/http/middlewares/Middleware10/forwardAuth/addAuthCookiesToResponse/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/address` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthaddress" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthaddress" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthaddress">`traefik/http/middlewares/Middleware10/forwardAuth/address`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/authRequestHeaders/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthRequestHeaders0" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthRequestHeaders0" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthRequestHeaders0">`traefik/http/middlewares/Middleware10/forwardAuth/authRequestHeaders/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/authRequestHeaders/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthRequestHeaders1" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthRequestHeaders1" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthRequestHeaders1">`traefik/http/middlewares/Middleware10/forwardAuth/authRequestHeaders/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeaders/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthResponseHeaders0" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthResponseHeaders0" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthResponseHeaders0">`traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeaders/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeaders/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthResponseHeaders1" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthResponseHeaders1" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthResponseHeaders1">`traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeaders/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeadersRegex` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthResponseHeadersRegex" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthResponseHeadersRegex" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthauthResponseHeadersRegex">`traefik/http/middlewares/Middleware10/forwardAuth/authResponseHeadersRegex`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/forwardBody` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthforwardBody" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthforwardBody" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthforwardBody">`traefik/http/middlewares/Middleware10/forwardAuth/forwardBody`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/headerField` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthheaderField" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthheaderField" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthheaderField">`traefik/http/middlewares/Middleware10/forwardAuth/headerField`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/maxBodySize` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthmaxBodySize" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthmaxBodySize" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthmaxBodySize">`traefik/http/middlewares/Middleware10/forwardAuth/maxBodySize`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/preserveLocationHeader` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthpreserveLocationHeader" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthpreserveLocationHeader" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthpreserveLocationHeader">`traefik/http/middlewares/Middleware10/forwardAuth/preserveLocationHeader`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/preserveRequestMethod` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthpreserveRequestMethod" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthpreserveRequestMethod" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthpreserveRequestMethod">`traefik/http/middlewares/Middleware10/forwardAuth/preserveRequestMethod`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/tls/ca` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlsca" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlsca" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlsca">`traefik/http/middlewares/Middleware10/forwardAuth/tls/ca`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/tls/caOptional` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlscaOptional" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlscaOptional" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlscaOptional">`traefik/http/middlewares/Middleware10/forwardAuth/tls/caOptional`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/tls/cert` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlscert" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlscert" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlscert">`traefik/http/middlewares/Middleware10/forwardAuth/tls/cert`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/tls/insecureSkipVerify` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlsinsecureSkipVerify" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlsinsecureSkipVerify" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlsinsecureSkipVerify">`traefik/http/middlewares/Middleware10/forwardAuth/tls/insecureSkipVerify`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/tls/key` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlskey" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlskey" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtlskey">`traefik/http/middlewares/Middleware10/forwardAuth/tls/key`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware10/forwardAuth/trustForwardHeader` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware10forwardAuthtrustForwardHeader" href="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtrustForwardHeader" title="#opt-traefikhttpmiddlewaresMiddleware10forwardAuthtrustForwardHeader">`traefik/http/middlewares/Middleware10/forwardAuth/trustForwardHeader`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware11/grpcWeb/allowOrigins/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware11grpcWeballowOrigins0" href="#opt-traefikhttpmiddlewaresMiddleware11grpcWeballowOrigins0" title="#opt-traefikhttpmiddlewaresMiddleware11grpcWeballowOrigins0">`traefik/http/middlewares/Middleware11/grpcWeb/allowOrigins/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware11/grpcWeb/allowOrigins/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware11grpcWeballowOrigins1" href="#opt-traefikhttpmiddlewaresMiddleware11grpcWeballowOrigins1" title="#opt-traefikhttpmiddlewaresMiddleware11grpcWeballowOrigins1">`traefik/http/middlewares/Middleware11/grpcWeb/allowOrigins/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlAllowCredentials` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowCredentials" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowCredentials" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowCredentials">`traefik/http/middlewares/Middleware12/headers/accessControlAllowCredentials`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlAllowHeaders/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowHeaders0" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowHeaders0" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowHeaders0">`traefik/http/middlewares/Middleware12/headers/accessControlAllowHeaders/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlAllowHeaders/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowHeaders1" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowHeaders1" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowHeaders1">`traefik/http/middlewares/Middleware12/headers/accessControlAllowHeaders/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlAllowMethods/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowMethods0" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowMethods0" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowMethods0">`traefik/http/middlewares/Middleware12/headers/accessControlAllowMethods/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlAllowMethods/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowMethods1" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowMethods1" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowMethods1">`traefik/http/middlewares/Middleware12/headers/accessControlAllowMethods/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlAllowOriginList/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginList0" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginList0" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginList0">`traefik/http/middlewares/Middleware12/headers/accessControlAllowOriginList/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlAllowOriginList/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginList1" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginList1" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginList1">`traefik/http/middlewares/Middleware12/headers/accessControlAllowOriginList/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlAllowOriginListRegex/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginListRegex0" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginListRegex0" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginListRegex0">`traefik/http/middlewares/Middleware12/headers/accessControlAllowOriginListRegex/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlAllowOriginListRegex/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginListRegex1" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginListRegex1" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlAllowOriginListRegex1">`traefik/http/middlewares/Middleware12/headers/accessControlAllowOriginListRegex/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlExposeHeaders/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlExposeHeaders0" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlExposeHeaders0" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlExposeHeaders0">`traefik/http/middlewares/Middleware12/headers/accessControlExposeHeaders/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlExposeHeaders/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlExposeHeaders1" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlExposeHeaders1" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlExposeHeaders1">`traefik/http/middlewares/Middleware12/headers/accessControlExposeHeaders/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/accessControlMaxAge` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaccessControlMaxAge" href="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlMaxAge" title="#opt-traefikhttpmiddlewaresMiddleware12headersaccessControlMaxAge">`traefik/http/middlewares/Middleware12/headers/accessControlMaxAge`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/addVaryHeader` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersaddVaryHeader" href="#opt-traefikhttpmiddlewaresMiddleware12headersaddVaryHeader" title="#opt-traefikhttpmiddlewaresMiddleware12headersaddVaryHeader">`traefik/http/middlewares/Middleware12/headers/addVaryHeader`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/allowedHosts/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersallowedHosts0" href="#opt-traefikhttpmiddlewaresMiddleware12headersallowedHosts0" title="#opt-traefikhttpmiddlewaresMiddleware12headersallowedHosts0">`traefik/http/middlewares/Middleware12/headers/allowedHosts/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/allowedHosts/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersallowedHosts1" href="#opt-traefikhttpmiddlewaresMiddleware12headersallowedHosts1" title="#opt-traefikhttpmiddlewaresMiddleware12headersallowedHosts1">`traefik/http/middlewares/Middleware12/headers/allowedHosts/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/browserXssFilter` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersbrowserXssFilter" href="#opt-traefikhttpmiddlewaresMiddleware12headersbrowserXssFilter" title="#opt-traefikhttpmiddlewaresMiddleware12headersbrowserXssFilter">`traefik/http/middlewares/Middleware12/headers/browserXssFilter`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/contentSecurityPolicy` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerscontentSecurityPolicy" href="#opt-traefikhttpmiddlewaresMiddleware12headerscontentSecurityPolicy" title="#opt-traefikhttpmiddlewaresMiddleware12headerscontentSecurityPolicy">`traefik/http/middlewares/Middleware12/headers/contentSecurityPolicy`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/contentSecurityPolicyReportOnly` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerscontentSecurityPolicyReportOnly" href="#opt-traefikhttpmiddlewaresMiddleware12headerscontentSecurityPolicyReportOnly" title="#opt-traefikhttpmiddlewaresMiddleware12headerscontentSecurityPolicyReportOnly">`traefik/http/middlewares/Middleware12/headers/contentSecurityPolicyReportOnly`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/contentTypeNosniff` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerscontentTypeNosniff" href="#opt-traefikhttpmiddlewaresMiddleware12headerscontentTypeNosniff" title="#opt-traefikhttpmiddlewaresMiddleware12headerscontentTypeNosniff">`traefik/http/middlewares/Middleware12/headers/contentTypeNosniff`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/customBrowserXSSValue` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerscustomBrowserXSSValue" href="#opt-traefikhttpmiddlewaresMiddleware12headerscustomBrowserXSSValue" title="#opt-traefikhttpmiddlewaresMiddleware12headerscustomBrowserXSSValue">`traefik/http/middlewares/Middleware12/headers/customBrowserXSSValue`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/customFrameOptionsValue` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerscustomFrameOptionsValue" href="#opt-traefikhttpmiddlewaresMiddleware12headerscustomFrameOptionsValue" title="#opt-traefikhttpmiddlewaresMiddleware12headerscustomFrameOptionsValue">`traefik/http/middlewares/Middleware12/headers/customFrameOptionsValue`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/customRequestHeaders/name0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerscustomRequestHeadersname0" href="#opt-traefikhttpmiddlewaresMiddleware12headerscustomRequestHeadersname0" title="#opt-traefikhttpmiddlewaresMiddleware12headerscustomRequestHeadersname0">`traefik/http/middlewares/Middleware12/headers/customRequestHeaders/name0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/customRequestHeaders/name1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerscustomRequestHeadersname1" href="#opt-traefikhttpmiddlewaresMiddleware12headerscustomRequestHeadersname1" title="#opt-traefikhttpmiddlewaresMiddleware12headerscustomRequestHeadersname1">`traefik/http/middlewares/Middleware12/headers/customRequestHeaders/name1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/customResponseHeaders/name0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerscustomResponseHeadersname0" href="#opt-traefikhttpmiddlewaresMiddleware12headerscustomResponseHeadersname0" title="#opt-traefikhttpmiddlewaresMiddleware12headerscustomResponseHeadersname0">`traefik/http/middlewares/Middleware12/headers/customResponseHeaders/name0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/customResponseHeaders/name1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerscustomResponseHeadersname1" href="#opt-traefikhttpmiddlewaresMiddleware12headerscustomResponseHeadersname1" title="#opt-traefikhttpmiddlewaresMiddleware12headerscustomResponseHeadersname1">`traefik/http/middlewares/Middleware12/headers/customResponseHeaders/name1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/featurePolicy` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersfeaturePolicy" href="#opt-traefikhttpmiddlewaresMiddleware12headersfeaturePolicy" title="#opt-traefikhttpmiddlewaresMiddleware12headersfeaturePolicy">`traefik/http/middlewares/Middleware12/headers/featurePolicy`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/forceSTSHeader` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersforceSTSHeader" href="#opt-traefikhttpmiddlewaresMiddleware12headersforceSTSHeader" title="#opt-traefikhttpmiddlewaresMiddleware12headersforceSTSHeader">`traefik/http/middlewares/Middleware12/headers/forceSTSHeader`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/frameDeny` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersframeDeny" href="#opt-traefikhttpmiddlewaresMiddleware12headersframeDeny" title="#opt-traefikhttpmiddlewaresMiddleware12headersframeDeny">`traefik/http/middlewares/Middleware12/headers/frameDeny`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/hostsProxyHeaders/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headershostsProxyHeaders0" href="#opt-traefikhttpmiddlewaresMiddleware12headershostsProxyHeaders0" title="#opt-traefikhttpmiddlewaresMiddleware12headershostsProxyHeaders0">`traefik/http/middlewares/Middleware12/headers/hostsProxyHeaders/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/hostsProxyHeaders/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headershostsProxyHeaders1" href="#opt-traefikhttpmiddlewaresMiddleware12headershostsProxyHeaders1" title="#opt-traefikhttpmiddlewaresMiddleware12headershostsProxyHeaders1">`traefik/http/middlewares/Middleware12/headers/hostsProxyHeaders/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/isDevelopment` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersisDevelopment" href="#opt-traefikhttpmiddlewaresMiddleware12headersisDevelopment" title="#opt-traefikhttpmiddlewaresMiddleware12headersisDevelopment">`traefik/http/middlewares/Middleware12/headers/isDevelopment`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/permissionsPolicy` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerspermissionsPolicy" href="#opt-traefikhttpmiddlewaresMiddleware12headerspermissionsPolicy" title="#opt-traefikhttpmiddlewaresMiddleware12headerspermissionsPolicy">`traefik/http/middlewares/Middleware12/headers/permissionsPolicy`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/publicKey` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerspublicKey" href="#opt-traefikhttpmiddlewaresMiddleware12headerspublicKey" title="#opt-traefikhttpmiddlewaresMiddleware12headerspublicKey">`traefik/http/middlewares/Middleware12/headers/publicKey`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/referrerPolicy` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersreferrerPolicy" href="#opt-traefikhttpmiddlewaresMiddleware12headersreferrerPolicy" title="#opt-traefikhttpmiddlewaresMiddleware12headersreferrerPolicy">`traefik/http/middlewares/Middleware12/headers/referrerPolicy`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/sslForceHost` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerssslForceHost" href="#opt-traefikhttpmiddlewaresMiddleware12headerssslForceHost" title="#opt-traefikhttpmiddlewaresMiddleware12headerssslForceHost">`traefik/http/middlewares/Middleware12/headers/sslForceHost`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/sslHost` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerssslHost" href="#opt-traefikhttpmiddlewaresMiddleware12headerssslHost" title="#opt-traefikhttpmiddlewaresMiddleware12headerssslHost">`traefik/http/middlewares/Middleware12/headers/sslHost`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/sslProxyHeaders/name0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerssslProxyHeadersname0" href="#opt-traefikhttpmiddlewaresMiddleware12headerssslProxyHeadersname0" title="#opt-traefikhttpmiddlewaresMiddleware12headerssslProxyHeadersname0">`traefik/http/middlewares/Middleware12/headers/sslProxyHeaders/name0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/sslProxyHeaders/name1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerssslProxyHeadersname1" href="#opt-traefikhttpmiddlewaresMiddleware12headerssslProxyHeadersname1" title="#opt-traefikhttpmiddlewaresMiddleware12headerssslProxyHeadersname1">`traefik/http/middlewares/Middleware12/headers/sslProxyHeaders/name1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/sslRedirect` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerssslRedirect" href="#opt-traefikhttpmiddlewaresMiddleware12headerssslRedirect" title="#opt-traefikhttpmiddlewaresMiddleware12headerssslRedirect">`traefik/http/middlewares/Middleware12/headers/sslRedirect`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/sslTemporaryRedirect` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headerssslTemporaryRedirect" href="#opt-traefikhttpmiddlewaresMiddleware12headerssslTemporaryRedirect" title="#opt-traefikhttpmiddlewaresMiddleware12headerssslTemporaryRedirect">`traefik/http/middlewares/Middleware12/headers/sslTemporaryRedirect`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/stsIncludeSubdomains` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersstsIncludeSubdomains" href="#opt-traefikhttpmiddlewaresMiddleware12headersstsIncludeSubdomains" title="#opt-traefikhttpmiddlewaresMiddleware12headersstsIncludeSubdomains">`traefik/http/middlewares/Middleware12/headers/stsIncludeSubdomains`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/stsPreload` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersstsPreload" href="#opt-traefikhttpmiddlewaresMiddleware12headersstsPreload" title="#opt-traefikhttpmiddlewaresMiddleware12headersstsPreload">`traefik/http/middlewares/Middleware12/headers/stsPreload`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware12/headers/stsSeconds` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware12headersstsSeconds" href="#opt-traefikhttpmiddlewaresMiddleware12headersstsSeconds" title="#opt-traefikhttpmiddlewaresMiddleware12headersstsSeconds">`traefik/http/middlewares/Middleware12/headers/stsSeconds`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware13/ipAllowList/ipStrategy/depth` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategydepth" href="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategydepth" title="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategydepth">`traefik/http/middlewares/Middleware13/ipAllowList/ipStrategy/depth`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware13/ipAllowList/ipStrategy/excludedIPs/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategyexcludedIPs0" href="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategyexcludedIPs0" title="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategyexcludedIPs0">`traefik/http/middlewares/Middleware13/ipAllowList/ipStrategy/excludedIPs/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware13/ipAllowList/ipStrategy/excludedIPs/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategyexcludedIPs1" href="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategyexcludedIPs1" title="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategyexcludedIPs1">`traefik/http/middlewares/Middleware13/ipAllowList/ipStrategy/excludedIPs/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware13/ipAllowList/ipStrategy/ipv6Subnet` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategyipv6Subnet" href="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategyipv6Subnet" title="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListipStrategyipv6Subnet">`traefik/http/middlewares/Middleware13/ipAllowList/ipStrategy/ipv6Subnet`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware13/ipAllowList/rejectStatusCode` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware13ipAllowListrejectStatusCode" href="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListrejectStatusCode" title="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListrejectStatusCode">`traefik/http/middlewares/Middleware13/ipAllowList/rejectStatusCode`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware13/ipAllowList/sourceRange/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware13ipAllowListsourceRange0" href="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListsourceRange0" title="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListsourceRange0">`traefik/http/middlewares/Middleware13/ipAllowList/sourceRange/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware13/ipAllowList/sourceRange/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware13ipAllowListsourceRange1" href="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListsourceRange1" title="#opt-traefikhttpmiddlewaresMiddleware13ipAllowListsourceRange1">`traefik/http/middlewares/Middleware13/ipAllowList/sourceRange/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware14/ipWhiteList/ipStrategy/depth` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategydepth" href="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategydepth" title="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategydepth">`traefik/http/middlewares/Middleware14/ipWhiteList/ipStrategy/depth`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware14/ipWhiteList/ipStrategy/excludedIPs/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategyexcludedIPs0" href="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategyexcludedIPs0" title="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategyexcludedIPs0">`traefik/http/middlewares/Middleware14/ipWhiteList/ipStrategy/excludedIPs/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware14/ipWhiteList/ipStrategy/excludedIPs/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategyexcludedIPs1" href="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategyexcludedIPs1" title="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategyexcludedIPs1">`traefik/http/middlewares/Middleware14/ipWhiteList/ipStrategy/excludedIPs/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware14/ipWhiteList/ipStrategy/ipv6Subnet` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategyipv6Subnet" href="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategyipv6Subnet" title="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListipStrategyipv6Subnet">`traefik/http/middlewares/Middleware14/ipWhiteList/ipStrategy/ipv6Subnet`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware14/ipWhiteList/sourceRange/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware14ipWhiteListsourceRange0" href="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListsourceRange0" title="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListsourceRange0">`traefik/http/middlewares/Middleware14/ipWhiteList/sourceRange/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware14/ipWhiteList/sourceRange/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware14ipWhiteListsourceRange1" href="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListsourceRange1" title="#opt-traefikhttpmiddlewaresMiddleware14ipWhiteListsourceRange1">`traefik/http/middlewares/Middleware14/ipWhiteList/sourceRange/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware15/inFlightReq/amount` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware15inFlightReqamount" href="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqamount" title="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqamount">`traefik/http/middlewares/Middleware15/inFlightReq/amount`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/ipStrategy/depth` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategydepth" href="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategydepth" title="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategydepth">`traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/ipStrategy/depth`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategyexcludedIPs0" href="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategyexcludedIPs0" title="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategyexcludedIPs0">`traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategyexcludedIPs1" href="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategyexcludedIPs1" title="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategyexcludedIPs1">`traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/ipStrategy/excludedIPs/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/ipStrategy/ipv6Subnet` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategyipv6Subnet" href="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategyipv6Subnet" title="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionipStrategyipv6Subnet">`traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/ipStrategy/ipv6Subnet`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/requestHeaderName` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionrequestHeaderName" href="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionrequestHeaderName" title="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionrequestHeaderName">`traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/requestHeaderName`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/requestHost` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionrequestHost" href="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionrequestHost" title="#opt-traefikhttpmiddlewaresMiddleware15inFlightReqsourceCriterionrequestHost">`traefik/http/middlewares/Middleware15/inFlightReq/sourceCriterion/requestHost`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/commonName` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuercommonName" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuercommonName" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuercommonName">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/commonName`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/country` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuercountry" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuercountry" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuercountry">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/country`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/domainComponent` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerdomainComponent" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerdomainComponent" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerdomainComponent">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/domainComponent`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/locality` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerlocality" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerlocality" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerlocality">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/locality`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/organization` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerorganization" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerorganization" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerorganization">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/organization`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/province` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerprovince" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerprovince" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerprovince">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/province`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/serialNumber` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerserialNumber" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerserialNumber" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoissuerserialNumber">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/issuer/serialNumber`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/notAfter` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfonotAfter" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfonotAfter" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfonotAfter">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/notAfter`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/notBefore` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfonotBefore" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfonotBefore" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfonotBefore">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/notBefore`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/sans` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosans" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosans" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosans">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/sans`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/serialNumber` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoserialNumber" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoserialNumber" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfoserialNumber">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/serialNumber`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/commonName` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectcommonName" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectcommonName" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectcommonName">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/commonName`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/country` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectcountry" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectcountry" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectcountry">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/country`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/domainComponent` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectdomainComponent" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectdomainComponent" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectdomainComponent">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/domainComponent`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/locality` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectlocality" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectlocality" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectlocality">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/locality`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/organization` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectorganization" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectorganization" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectorganization">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/organization`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/organizationalUnit` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectorganizationalUnit" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectorganizationalUnit" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectorganizationalUnit">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/organizationalUnit`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/province` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectprovince" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectprovince" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectprovince">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/province`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/serialNumber` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectserialNumber" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectserialNumber" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertinfosubjectserialNumber">`traefik/http/middlewares/Middleware16/passTLSClientCert/info/subject/serialNumber`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware16/passTLSClientCert/pem` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertpem" href="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertpem" title="#opt-traefikhttpmiddlewaresMiddleware16passTLSClientCertpem">`traefik/http/middlewares/Middleware16/passTLSClientCert/pem`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware17/plugin/PluginConf0/name0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf0name0" href="#opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf0name0" title="#opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf0name0">`traefik/http/middlewares/Middleware17/plugin/PluginConf0/name0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware17/plugin/PluginConf0/name1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf0name1" href="#opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf0name1" title="#opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf0name1">`traefik/http/middlewares/Middleware17/plugin/PluginConf0/name1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware17/plugin/PluginConf1/name0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf1name0" href="#opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf1name0" title="#opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf1name0">`traefik/http/middlewares/Middleware17/plugin/PluginConf1/name0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware17/plugin/PluginConf1/name1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf1name1" href="#opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf1name1" title="#opt-traefikhttpmiddlewaresMiddleware17pluginPluginConf1name1">`traefik/http/middlewares/Middleware17/plugin/PluginConf1/name1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/average` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitaverage" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitaverage" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitaverage">`traefik/http/middlewares/Middleware18/rateLimit/average`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/burst` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitburst" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitburst" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitburst">`traefik/http/middlewares/Middleware18/rateLimit/burst`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/period` | `42s` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitperiod" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitperiod" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitperiod">`traefik/http/middlewares/Middleware18/rateLimit/period`</a> | `42s` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/db` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredisdb" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisdb" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisdb">`traefik/http/middlewares/Middleware18/rateLimit/redis/db`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/dialTimeout` | `42s` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredisdialTimeout" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisdialTimeout" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisdialTimeout">`traefik/http/middlewares/Middleware18/rateLimit/redis/dialTimeout`</a> | `42s` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/endpoints/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredisendpoints0" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisendpoints0" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisendpoints0">`traefik/http/middlewares/Middleware18/rateLimit/redis/endpoints/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/endpoints/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredisendpoints1" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisendpoints1" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisendpoints1">`traefik/http/middlewares/Middleware18/rateLimit/redis/endpoints/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/maxActiveConns` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredismaxActiveConns" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredismaxActiveConns" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredismaxActiveConns">`traefik/http/middlewares/Middleware18/rateLimit/redis/maxActiveConns`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/minIdleConns` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredisminIdleConns" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisminIdleConns" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisminIdleConns">`traefik/http/middlewares/Middleware18/rateLimit/redis/minIdleConns`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/password` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredispassword" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredispassword" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredispassword">`traefik/http/middlewares/Middleware18/rateLimit/redis/password`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/poolSize` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredispoolSize" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredispoolSize" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredispoolSize">`traefik/http/middlewares/Middleware18/rateLimit/redis/poolSize`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/readTimeout` | `42s` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredisreadTimeout" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisreadTimeout" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisreadTimeout">`traefik/http/middlewares/Middleware18/rateLimit/redis/readTimeout`</a> | `42s` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/tls/ca` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlsca" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlsca" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlsca">`traefik/http/middlewares/Middleware18/rateLimit/redis/tls/ca`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/tls/cert` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlscert" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlscert" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlscert">`traefik/http/middlewares/Middleware18/rateLimit/redis/tls/cert`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/tls/insecureSkipVerify` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlsinsecureSkipVerify" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlsinsecureSkipVerify" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlsinsecureSkipVerify">`traefik/http/middlewares/Middleware18/rateLimit/redis/tls/insecureSkipVerify`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/tls/key` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlskey" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlskey" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredistlskey">`traefik/http/middlewares/Middleware18/rateLimit/redis/tls/key`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/username` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitredisusername" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisusername" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitredisusername">`traefik/http/middlewares/Middleware18/rateLimit/redis/username`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/redis/writeTimeout` | `42s` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitrediswriteTimeout" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitrediswriteTimeout" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitrediswriteTimeout">`traefik/http/middlewares/Middleware18/rateLimit/redis/writeTimeout`</a> | `42s` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/ipStrategy/depth` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategydepth" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategydepth" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategydepth">`traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/ipStrategy/depth`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/ipStrategy/excludedIPs/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategyexcludedIPs0" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategyexcludedIPs0" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategyexcludedIPs0">`traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/ipStrategy/excludedIPs/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/ipStrategy/excludedIPs/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategyexcludedIPs1" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategyexcludedIPs1" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategyexcludedIPs1">`traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/ipStrategy/excludedIPs/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/ipStrategy/ipv6Subnet` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategyipv6Subnet" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategyipv6Subnet" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionipStrategyipv6Subnet">`traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/ipStrategy/ipv6Subnet`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/requestHeaderName` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionrequestHeaderName" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionrequestHeaderName" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionrequestHeaderName">`traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/requestHeaderName`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/requestHost` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionrequestHost" href="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionrequestHost" title="#opt-traefikhttpmiddlewaresMiddleware18rateLimitsourceCriterionrequestHost">`traefik/http/middlewares/Middleware18/rateLimit/sourceCriterion/requestHost`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware19/redirectRegex/permanent` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware19redirectRegexpermanent" href="#opt-traefikhttpmiddlewaresMiddleware19redirectRegexpermanent" title="#opt-traefikhttpmiddlewaresMiddleware19redirectRegexpermanent">`traefik/http/middlewares/Middleware19/redirectRegex/permanent`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware19/redirectRegex/regex` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware19redirectRegexregex" href="#opt-traefikhttpmiddlewaresMiddleware19redirectRegexregex" title="#opt-traefikhttpmiddlewaresMiddleware19redirectRegexregex">`traefik/http/middlewares/Middleware19/redirectRegex/regex`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware19/redirectRegex/replacement` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware19redirectRegexreplacement" href="#opt-traefikhttpmiddlewaresMiddleware19redirectRegexreplacement" title="#opt-traefikhttpmiddlewaresMiddleware19redirectRegexreplacement">`traefik/http/middlewares/Middleware19/redirectRegex/replacement`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware20/redirectScheme/permanent` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware20redirectSchemepermanent" href="#opt-traefikhttpmiddlewaresMiddleware20redirectSchemepermanent" title="#opt-traefikhttpmiddlewaresMiddleware20redirectSchemepermanent">`traefik/http/middlewares/Middleware20/redirectScheme/permanent`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware20/redirectScheme/port` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware20redirectSchemeport" href="#opt-traefikhttpmiddlewaresMiddleware20redirectSchemeport" title="#opt-traefikhttpmiddlewaresMiddleware20redirectSchemeport">`traefik/http/middlewares/Middleware20/redirectScheme/port`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware20/redirectScheme/scheme` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware20redirectSchemescheme" href="#opt-traefikhttpmiddlewaresMiddleware20redirectSchemescheme" title="#opt-traefikhttpmiddlewaresMiddleware20redirectSchemescheme">`traefik/http/middlewares/Middleware20/redirectScheme/scheme`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware21/replacePath/path` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware21replacePathpath" href="#opt-traefikhttpmiddlewaresMiddleware21replacePathpath" title="#opt-traefikhttpmiddlewaresMiddleware21replacePathpath">`traefik/http/middlewares/Middleware21/replacePath/path`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware22/replacePathRegex/regex` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware22replacePathRegexregex" href="#opt-traefikhttpmiddlewaresMiddleware22replacePathRegexregex" title="#opt-traefikhttpmiddlewaresMiddleware22replacePathRegexregex">`traefik/http/middlewares/Middleware22/replacePathRegex/regex`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware22/replacePathRegex/replacement` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware22replacePathRegexreplacement" href="#opt-traefikhttpmiddlewaresMiddleware22replacePathRegexreplacement" title="#opt-traefikhttpmiddlewaresMiddleware22replacePathRegexreplacement">`traefik/http/middlewares/Middleware22/replacePathRegex/replacement`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware23/retry/attempts` | `42` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware23retryattempts" href="#opt-traefikhttpmiddlewaresMiddleware23retryattempts" title="#opt-traefikhttpmiddlewaresMiddleware23retryattempts">`traefik/http/middlewares/Middleware23/retry/attempts`</a> | `42` |
|
||||||
| `traefik/http/middlewares/Middleware23/retry/initialInterval` | `42s` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware23retryinitialInterval" href="#opt-traefikhttpmiddlewaresMiddleware23retryinitialInterval" title="#opt-traefikhttpmiddlewaresMiddleware23retryinitialInterval">`traefik/http/middlewares/Middleware23/retry/initialInterval`</a> | `42s` |
|
||||||
| `traefik/http/middlewares/Middleware24/stripPrefix/forceSlash` | `true` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware24stripPrefixforceSlash" href="#opt-traefikhttpmiddlewaresMiddleware24stripPrefixforceSlash" title="#opt-traefikhttpmiddlewaresMiddleware24stripPrefixforceSlash">`traefik/http/middlewares/Middleware24/stripPrefix/forceSlash`</a> | `true` |
|
||||||
| `traefik/http/middlewares/Middleware24/stripPrefix/prefixes/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware24stripPrefixprefixes0" href="#opt-traefikhttpmiddlewaresMiddleware24stripPrefixprefixes0" title="#opt-traefikhttpmiddlewaresMiddleware24stripPrefixprefixes0">`traefik/http/middlewares/Middleware24/stripPrefix/prefixes/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware24/stripPrefix/prefixes/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware24stripPrefixprefixes1" href="#opt-traefikhttpmiddlewaresMiddleware24stripPrefixprefixes1" title="#opt-traefikhttpmiddlewaresMiddleware24stripPrefixprefixes1">`traefik/http/middlewares/Middleware24/stripPrefix/prefixes/1`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware25/stripPrefixRegex/regex/0` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware25stripPrefixRegexregex0" href="#opt-traefikhttpmiddlewaresMiddleware25stripPrefixRegexregex0" title="#opt-traefikhttpmiddlewaresMiddleware25stripPrefixRegexregex0">`traefik/http/middlewares/Middleware25/stripPrefixRegex/regex/0`</a> | `foobar` |
|
||||||
| `traefik/http/middlewares/Middleware25/stripPrefixRegex/regex/1` | `foobar` |
|
| <a id="opt-traefikhttpmiddlewaresMiddleware25stripPrefixRegexregex1" href="#opt-traefikhttpmiddlewaresMiddleware25stripPrefixRegexregex1" title="#opt-traefikhttpmiddlewaresMiddleware25stripPrefixRegexregex1">`traefik/http/middlewares/Middleware25/stripPrefixRegex/regex/1`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/entryPoints/0` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0entryPoints0" href="#opt-traefikhttproutersRouter0entryPoints0" title="#opt-traefikhttproutersRouter0entryPoints0">`traefik/http/routers/Router0/entryPoints/0`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/entryPoints/1` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0entryPoints1" href="#opt-traefikhttproutersRouter0entryPoints1" title="#opt-traefikhttproutersRouter0entryPoints1">`traefik/http/routers/Router0/entryPoints/1`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/middlewares/0` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0middlewares0" href="#opt-traefikhttproutersRouter0middlewares0" title="#opt-traefikhttproutersRouter0middlewares0">`traefik/http/routers/Router0/middlewares/0`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/middlewares/1` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0middlewares1" href="#opt-traefikhttproutersRouter0middlewares1" title="#opt-traefikhttproutersRouter0middlewares1">`traefik/http/routers/Router0/middlewares/1`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/observability/accessLogs` | `true` |
|
| <a id="opt-traefikhttproutersRouter0observabilityaccessLogs" href="#opt-traefikhttproutersRouter0observabilityaccessLogs" title="#opt-traefikhttproutersRouter0observabilityaccessLogs">`traefik/http/routers/Router0/observability/accessLogs`</a> | `true` |
|
||||||
| `traefik/http/routers/Router0/observability/metrics` | `true` |
|
| <a id="opt-traefikhttproutersRouter0observabilitymetrics" href="#opt-traefikhttproutersRouter0observabilitymetrics" title="#opt-traefikhttproutersRouter0observabilitymetrics">`traefik/http/routers/Router0/observability/metrics`</a> | `true` |
|
||||||
| `traefik/http/routers/Router0/observability/traceVerbosity` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0observabilitytraceVerbosity" href="#opt-traefikhttproutersRouter0observabilitytraceVerbosity" title="#opt-traefikhttproutersRouter0observabilitytraceVerbosity">`traefik/http/routers/Router0/observability/traceVerbosity`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/observability/tracing` | `true` |
|
| <a id="opt-traefikhttproutersRouter0observabilitytracing" href="#opt-traefikhttproutersRouter0observabilitytracing" title="#opt-traefikhttproutersRouter0observabilitytracing">`traefik/http/routers/Router0/observability/tracing`</a> | `true` |
|
||||||
| `traefik/http/routers/Router0/priority` | `42` |
|
| <a id="opt-traefikhttproutersRouter0priority" href="#opt-traefikhttproutersRouter0priority" title="#opt-traefikhttproutersRouter0priority">`traefik/http/routers/Router0/priority`</a> | `42` |
|
||||||
| `traefik/http/routers/Router0/rule` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0rule" href="#opt-traefikhttproutersRouter0rule" title="#opt-traefikhttproutersRouter0rule">`traefik/http/routers/Router0/rule`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/ruleSyntax` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0ruleSyntax" href="#opt-traefikhttproutersRouter0ruleSyntax" title="#opt-traefikhttproutersRouter0ruleSyntax">`traefik/http/routers/Router0/ruleSyntax`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/service` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0service" href="#opt-traefikhttproutersRouter0service" title="#opt-traefikhttproutersRouter0service">`traefik/http/routers/Router0/service`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/tls/certResolver` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0tlscertResolver" href="#opt-traefikhttproutersRouter0tlscertResolver" title="#opt-traefikhttproutersRouter0tlscertResolver">`traefik/http/routers/Router0/tls/certResolver`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/tls/domains/0/main` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0tlsdomains0main" href="#opt-traefikhttproutersRouter0tlsdomains0main" title="#opt-traefikhttproutersRouter0tlsdomains0main">`traefik/http/routers/Router0/tls/domains/0/main`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/tls/domains/0/sans/0` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0tlsdomains0sans0" href="#opt-traefikhttproutersRouter0tlsdomains0sans0" title="#opt-traefikhttproutersRouter0tlsdomains0sans0">`traefik/http/routers/Router0/tls/domains/0/sans/0`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/tls/domains/0/sans/1` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0tlsdomains0sans1" href="#opt-traefikhttproutersRouter0tlsdomains0sans1" title="#opt-traefikhttproutersRouter0tlsdomains0sans1">`traefik/http/routers/Router0/tls/domains/0/sans/1`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/tls/domains/1/main` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0tlsdomains1main" href="#opt-traefikhttproutersRouter0tlsdomains1main" title="#opt-traefikhttproutersRouter0tlsdomains1main">`traefik/http/routers/Router0/tls/domains/1/main`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/tls/domains/1/sans/0` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0tlsdomains1sans0" href="#opt-traefikhttproutersRouter0tlsdomains1sans0" title="#opt-traefikhttproutersRouter0tlsdomains1sans0">`traefik/http/routers/Router0/tls/domains/1/sans/0`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/tls/domains/1/sans/1` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0tlsdomains1sans1" href="#opt-traefikhttproutersRouter0tlsdomains1sans1" title="#opt-traefikhttproutersRouter0tlsdomains1sans1">`traefik/http/routers/Router0/tls/domains/1/sans/1`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router0/tls/options` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter0tlsoptions" href="#opt-traefikhttproutersRouter0tlsoptions" title="#opt-traefikhttproutersRouter0tlsoptions">`traefik/http/routers/Router0/tls/options`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/entryPoints/0` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1entryPoints0" href="#opt-traefikhttproutersRouter1entryPoints0" title="#opt-traefikhttproutersRouter1entryPoints0">`traefik/http/routers/Router1/entryPoints/0`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/entryPoints/1` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1entryPoints1" href="#opt-traefikhttproutersRouter1entryPoints1" title="#opt-traefikhttproutersRouter1entryPoints1">`traefik/http/routers/Router1/entryPoints/1`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/middlewares/0` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1middlewares0" href="#opt-traefikhttproutersRouter1middlewares0" title="#opt-traefikhttproutersRouter1middlewares0">`traefik/http/routers/Router1/middlewares/0`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/middlewares/1` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1middlewares1" href="#opt-traefikhttproutersRouter1middlewares1" title="#opt-traefikhttproutersRouter1middlewares1">`traefik/http/routers/Router1/middlewares/1`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/observability/accessLogs` | `true` |
|
| <a id="opt-traefikhttproutersRouter1observabilityaccessLogs" href="#opt-traefikhttproutersRouter1observabilityaccessLogs" title="#opt-traefikhttproutersRouter1observabilityaccessLogs">`traefik/http/routers/Router1/observability/accessLogs`</a> | `true` |
|
||||||
| `traefik/http/routers/Router1/observability/metrics` | `true` |
|
| <a id="opt-traefikhttproutersRouter1observabilitymetrics" href="#opt-traefikhttproutersRouter1observabilitymetrics" title="#opt-traefikhttproutersRouter1observabilitymetrics">`traefik/http/routers/Router1/observability/metrics`</a> | `true` |
|
||||||
| `traefik/http/routers/Router1/observability/traceVerbosity` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1observabilitytraceVerbosity" href="#opt-traefikhttproutersRouter1observabilitytraceVerbosity" title="#opt-traefikhttproutersRouter1observabilitytraceVerbosity">`traefik/http/routers/Router1/observability/traceVerbosity`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/observability/tracing` | `true` |
|
| <a id="opt-traefikhttproutersRouter1observabilitytracing" href="#opt-traefikhttproutersRouter1observabilitytracing" title="#opt-traefikhttproutersRouter1observabilitytracing">`traefik/http/routers/Router1/observability/tracing`</a> | `true` |
|
||||||
| `traefik/http/routers/Router1/priority` | `42` |
|
| <a id="opt-traefikhttproutersRouter1priority" href="#opt-traefikhttproutersRouter1priority" title="#opt-traefikhttproutersRouter1priority">`traefik/http/routers/Router1/priority`</a> | `42` |
|
||||||
| `traefik/http/routers/Router1/rule` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1rule" href="#opt-traefikhttproutersRouter1rule" title="#opt-traefikhttproutersRouter1rule">`traefik/http/routers/Router1/rule`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/ruleSyntax` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1ruleSyntax" href="#opt-traefikhttproutersRouter1ruleSyntax" title="#opt-traefikhttproutersRouter1ruleSyntax">`traefik/http/routers/Router1/ruleSyntax`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/service` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1service" href="#opt-traefikhttproutersRouter1service" title="#opt-traefikhttproutersRouter1service">`traefik/http/routers/Router1/service`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/tls/certResolver` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1tlscertResolver" href="#opt-traefikhttproutersRouter1tlscertResolver" title="#opt-traefikhttproutersRouter1tlscertResolver">`traefik/http/routers/Router1/tls/certResolver`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/tls/domains/0/main` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1tlsdomains0main" href="#opt-traefikhttproutersRouter1tlsdomains0main" title="#opt-traefikhttproutersRouter1tlsdomains0main">`traefik/http/routers/Router1/tls/domains/0/main`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/tls/domains/0/sans/0` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1tlsdomains0sans0" href="#opt-traefikhttproutersRouter1tlsdomains0sans0" title="#opt-traefikhttproutersRouter1tlsdomains0sans0">`traefik/http/routers/Router1/tls/domains/0/sans/0`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/tls/domains/0/sans/1` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1tlsdomains0sans1" href="#opt-traefikhttproutersRouter1tlsdomains0sans1" title="#opt-traefikhttproutersRouter1tlsdomains0sans1">`traefik/http/routers/Router1/tls/domains/0/sans/1`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/tls/domains/1/main` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1tlsdomains1main" href="#opt-traefikhttproutersRouter1tlsdomains1main" title="#opt-traefikhttproutersRouter1tlsdomains1main">`traefik/http/routers/Router1/tls/domains/1/main`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/tls/domains/1/sans/0` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1tlsdomains1sans0" href="#opt-traefikhttproutersRouter1tlsdomains1sans0" title="#opt-traefikhttproutersRouter1tlsdomains1sans0">`traefik/http/routers/Router1/tls/domains/1/sans/0`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/tls/domains/1/sans/1` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1tlsdomains1sans1" href="#opt-traefikhttproutersRouter1tlsdomains1sans1" title="#opt-traefikhttproutersRouter1tlsdomains1sans1">`traefik/http/routers/Router1/tls/domains/1/sans/1`</a> | `foobar` |
|
||||||
| `traefik/http/routers/Router1/tls/options` | `foobar` |
|
| <a id="opt-traefikhttproutersRouter1tlsoptions" href="#opt-traefikhttproutersRouter1tlsoptions" title="#opt-traefikhttproutersRouter1tlsoptions">`traefik/http/routers/Router1/tls/options`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/certificates/0/certFile` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0certificates0certFile" href="#opt-traefikhttpserversTransportsServersTransport0certificates0certFile" title="#opt-traefikhttpserversTransportsServersTransport0certificates0certFile">`traefik/http/serversTransports/ServersTransport0/certificates/0/certFile`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/certificates/0/keyFile` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0certificates0keyFile" href="#opt-traefikhttpserversTransportsServersTransport0certificates0keyFile" title="#opt-traefikhttpserversTransportsServersTransport0certificates0keyFile">`traefik/http/serversTransports/ServersTransport0/certificates/0/keyFile`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/certificates/1/certFile` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0certificates1certFile" href="#opt-traefikhttpserversTransportsServersTransport0certificates1certFile" title="#opt-traefikhttpserversTransportsServersTransport0certificates1certFile">`traefik/http/serversTransports/ServersTransport0/certificates/1/certFile`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/certificates/1/keyFile` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0certificates1keyFile" href="#opt-traefikhttpserversTransportsServersTransport0certificates1keyFile" title="#opt-traefikhttpserversTransportsServersTransport0certificates1keyFile">`traefik/http/serversTransports/ServersTransport0/certificates/1/keyFile`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/disableHTTP2` | `true` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0disableHTTP2" href="#opt-traefikhttpserversTransportsServersTransport0disableHTTP2" title="#opt-traefikhttpserversTransportsServersTransport0disableHTTP2">`traefik/http/serversTransports/ServersTransport0/disableHTTP2`</a> | `true` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/forwardingTimeouts/dialTimeout` | `42s` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsdialTimeout" href="#opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsdialTimeout" title="#opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsdialTimeout">`traefik/http/serversTransports/ServersTransport0/forwardingTimeouts/dialTimeout`</a> | `42s` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/forwardingTimeouts/idleConnTimeout` | `42s` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsidleConnTimeout" href="#opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsidleConnTimeout" title="#opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsidleConnTimeout">`traefik/http/serversTransports/ServersTransport0/forwardingTimeouts/idleConnTimeout`</a> | `42s` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/forwardingTimeouts/pingTimeout` | `42s` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutspingTimeout" href="#opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutspingTimeout" title="#opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutspingTimeout">`traefik/http/serversTransports/ServersTransport0/forwardingTimeouts/pingTimeout`</a> | `42s` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/forwardingTimeouts/readIdleTimeout` | `42s` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsreadIdleTimeout" href="#opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsreadIdleTimeout" title="#opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsreadIdleTimeout">`traefik/http/serversTransports/ServersTransport0/forwardingTimeouts/readIdleTimeout`</a> | `42s` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/forwardingTimeouts/responseHeaderTimeout` | `42s` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsresponseHeaderTimeout" href="#opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsresponseHeaderTimeout" title="#opt-traefikhttpserversTransportsServersTransport0forwardingTimeoutsresponseHeaderTimeout">`traefik/http/serversTransports/ServersTransport0/forwardingTimeouts/responseHeaderTimeout`</a> | `42s` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/insecureSkipVerify` | `true` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0insecureSkipVerify" href="#opt-traefikhttpserversTransportsServersTransport0insecureSkipVerify" title="#opt-traefikhttpserversTransportsServersTransport0insecureSkipVerify">`traefik/http/serversTransports/ServersTransport0/insecureSkipVerify`</a> | `true` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/maxIdleConnsPerHost` | `42` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0maxIdleConnsPerHost" href="#opt-traefikhttpserversTransportsServersTransport0maxIdleConnsPerHost" title="#opt-traefikhttpserversTransportsServersTransport0maxIdleConnsPerHost">`traefik/http/serversTransports/ServersTransport0/maxIdleConnsPerHost`</a> | `42` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/peerCertURI` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0peerCertURI" href="#opt-traefikhttpserversTransportsServersTransport0peerCertURI" title="#opt-traefikhttpserversTransportsServersTransport0peerCertURI">`traefik/http/serversTransports/ServersTransport0/peerCertURI`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/rootCAs/0` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0rootCAs0" href="#opt-traefikhttpserversTransportsServersTransport0rootCAs0" title="#opt-traefikhttpserversTransportsServersTransport0rootCAs0">`traefik/http/serversTransports/ServersTransport0/rootCAs/0`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/rootCAs/1` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0rootCAs1" href="#opt-traefikhttpserversTransportsServersTransport0rootCAs1" title="#opt-traefikhttpserversTransportsServersTransport0rootCAs1">`traefik/http/serversTransports/ServersTransport0/rootCAs/1`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/serverName` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0serverName" href="#opt-traefikhttpserversTransportsServersTransport0serverName" title="#opt-traefikhttpserversTransportsServersTransport0serverName">`traefik/http/serversTransports/ServersTransport0/serverName`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/spiffe/ids/0` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0spiffeids0" href="#opt-traefikhttpserversTransportsServersTransport0spiffeids0" title="#opt-traefikhttpserversTransportsServersTransport0spiffeids0">`traefik/http/serversTransports/ServersTransport0/spiffe/ids/0`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/spiffe/ids/1` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0spiffeids1" href="#opt-traefikhttpserversTransportsServersTransport0spiffeids1" title="#opt-traefikhttpserversTransportsServersTransport0spiffeids1">`traefik/http/serversTransports/ServersTransport0/spiffe/ids/1`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport0/spiffe/trustDomain` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport0spiffetrustDomain" href="#opt-traefikhttpserversTransportsServersTransport0spiffetrustDomain" title="#opt-traefikhttpserversTransportsServersTransport0spiffetrustDomain">`traefik/http/serversTransports/ServersTransport0/spiffe/trustDomain`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/certificates/0/certFile` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1certificates0certFile" href="#opt-traefikhttpserversTransportsServersTransport1certificates0certFile" title="#opt-traefikhttpserversTransportsServersTransport1certificates0certFile">`traefik/http/serversTransports/ServersTransport1/certificates/0/certFile`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/certificates/0/keyFile` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1certificates0keyFile" href="#opt-traefikhttpserversTransportsServersTransport1certificates0keyFile" title="#opt-traefikhttpserversTransportsServersTransport1certificates0keyFile">`traefik/http/serversTransports/ServersTransport1/certificates/0/keyFile`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/certificates/1/certFile` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1certificates1certFile" href="#opt-traefikhttpserversTransportsServersTransport1certificates1certFile" title="#opt-traefikhttpserversTransportsServersTransport1certificates1certFile">`traefik/http/serversTransports/ServersTransport1/certificates/1/certFile`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/certificates/1/keyFile` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1certificates1keyFile" href="#opt-traefikhttpserversTransportsServersTransport1certificates1keyFile" title="#opt-traefikhttpserversTransportsServersTransport1certificates1keyFile">`traefik/http/serversTransports/ServersTransport1/certificates/1/keyFile`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/disableHTTP2` | `true` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1disableHTTP2" href="#opt-traefikhttpserversTransportsServersTransport1disableHTTP2" title="#opt-traefikhttpserversTransportsServersTransport1disableHTTP2">`traefik/http/serversTransports/ServersTransport1/disableHTTP2`</a> | `true` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/forwardingTimeouts/dialTimeout` | `42s` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsdialTimeout" href="#opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsdialTimeout" title="#opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsdialTimeout">`traefik/http/serversTransports/ServersTransport1/forwardingTimeouts/dialTimeout`</a> | `42s` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/forwardingTimeouts/idleConnTimeout` | `42s` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsidleConnTimeout" href="#opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsidleConnTimeout" title="#opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsidleConnTimeout">`traefik/http/serversTransports/ServersTransport1/forwardingTimeouts/idleConnTimeout`</a> | `42s` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/forwardingTimeouts/pingTimeout` | `42s` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutspingTimeout" href="#opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutspingTimeout" title="#opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutspingTimeout">`traefik/http/serversTransports/ServersTransport1/forwardingTimeouts/pingTimeout`</a> | `42s` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/forwardingTimeouts/readIdleTimeout` | `42s` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsreadIdleTimeout" href="#opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsreadIdleTimeout" title="#opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsreadIdleTimeout">`traefik/http/serversTransports/ServersTransport1/forwardingTimeouts/readIdleTimeout`</a> | `42s` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/forwardingTimeouts/responseHeaderTimeout` | `42s` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsresponseHeaderTimeout" href="#opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsresponseHeaderTimeout" title="#opt-traefikhttpserversTransportsServersTransport1forwardingTimeoutsresponseHeaderTimeout">`traefik/http/serversTransports/ServersTransport1/forwardingTimeouts/responseHeaderTimeout`</a> | `42s` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/insecureSkipVerify` | `true` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1insecureSkipVerify" href="#opt-traefikhttpserversTransportsServersTransport1insecureSkipVerify" title="#opt-traefikhttpserversTransportsServersTransport1insecureSkipVerify">`traefik/http/serversTransports/ServersTransport1/insecureSkipVerify`</a> | `true` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/maxIdleConnsPerHost` | `42` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1maxIdleConnsPerHost" href="#opt-traefikhttpserversTransportsServersTransport1maxIdleConnsPerHost" title="#opt-traefikhttpserversTransportsServersTransport1maxIdleConnsPerHost">`traefik/http/serversTransports/ServersTransport1/maxIdleConnsPerHost`</a> | `42` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/peerCertURI` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1peerCertURI" href="#opt-traefikhttpserversTransportsServersTransport1peerCertURI" title="#opt-traefikhttpserversTransportsServersTransport1peerCertURI">`traefik/http/serversTransports/ServersTransport1/peerCertURI`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/rootCAs/0` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1rootCAs0" href="#opt-traefikhttpserversTransportsServersTransport1rootCAs0" title="#opt-traefikhttpserversTransportsServersTransport1rootCAs0">`traefik/http/serversTransports/ServersTransport1/rootCAs/0`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/rootCAs/1` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1rootCAs1" href="#opt-traefikhttpserversTransportsServersTransport1rootCAs1" title="#opt-traefikhttpserversTransportsServersTransport1rootCAs1">`traefik/http/serversTransports/ServersTransport1/rootCAs/1`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/serverName` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1serverName" href="#opt-traefikhttpserversTransportsServersTransport1serverName" title="#opt-traefikhttpserversTransportsServersTransport1serverName">`traefik/http/serversTransports/ServersTransport1/serverName`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/spiffe/ids/0` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1spiffeids0" href="#opt-traefikhttpserversTransportsServersTransport1spiffeids0" title="#opt-traefikhttpserversTransportsServersTransport1spiffeids0">`traefik/http/serversTransports/ServersTransport1/spiffe/ids/0`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/spiffe/ids/1` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1spiffeids1" href="#opt-traefikhttpserversTransportsServersTransport1spiffeids1" title="#opt-traefikhttpserversTransportsServersTransport1spiffeids1">`traefik/http/serversTransports/ServersTransport1/spiffe/ids/1`</a> | `foobar` |
|
||||||
| `traefik/http/serversTransports/ServersTransport1/spiffe/trustDomain` | `foobar` |
|
| <a id="opt-traefikhttpserversTransportsServersTransport1spiffetrustDomain" href="#opt-traefikhttpserversTransportsServersTransport1spiffetrustDomain" title="#opt-traefikhttpserversTransportsServersTransport1spiffetrustDomain">`traefik/http/serversTransports/ServersTransport1/spiffe/trustDomain`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service01/failover/fallback` | `foobar` |
|
| <a id="opt-traefikhttpservicesService01failoverfallback" href="#opt-traefikhttpservicesService01failoverfallback" title="#opt-traefikhttpservicesService01failoverfallback">`traefik/http/services/Service01/failover/fallback`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service01/failover/healthCheck` | `` |
|
| <a id="opt-traefikhttpservicesService01failoverhealthCheck" href="#opt-traefikhttpservicesService01failoverhealthCheck" title="#opt-traefikhttpservicesService01failoverhealthCheck">`traefik/http/services/Service01/failover/healthCheck`</a> | `` |
|
||||||
| `traefik/http/services/Service01/failover/service` | `foobar` |
|
| <a id="opt-traefikhttpservicesService01failoverservice" href="#opt-traefikhttpservicesService01failoverservice" title="#opt-traefikhttpservicesService01failoverservice">`traefik/http/services/Service01/failover/service`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/followRedirects` | `true` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckfollowRedirects" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckfollowRedirects" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckfollowRedirects">`traefik/http/services/Service02/loadBalancer/healthCheck/followRedirects`</a> | `true` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/headers/name0` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckheadersname0" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckheadersname0" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckheadersname0">`traefik/http/services/Service02/loadBalancer/healthCheck/headers/name0`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/headers/name1` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckheadersname1" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckheadersname1" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckheadersname1">`traefik/http/services/Service02/loadBalancer/healthCheck/headers/name1`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/hostname` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckhostname" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckhostname" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckhostname">`traefik/http/services/Service02/loadBalancer/healthCheck/hostname`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/interval` | `42s` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckinterval" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckinterval" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckinterval">`traefik/http/services/Service02/loadBalancer/healthCheck/interval`</a> | `42s` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/method` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckmethod" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckmethod" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckmethod">`traefik/http/services/Service02/loadBalancer/healthCheck/method`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/mode` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckmode" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckmode" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckmode">`traefik/http/services/Service02/loadBalancer/healthCheck/mode`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/path` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckpath" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckpath" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckpath">`traefik/http/services/Service02/loadBalancer/healthCheck/path`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/port` | `42` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckport" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckport" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckport">`traefik/http/services/Service02/loadBalancer/healthCheck/port`</a> | `42` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/scheme` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckscheme" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckscheme" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckscheme">`traefik/http/services/Service02/loadBalancer/healthCheck/scheme`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/status` | `42` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckstatus" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckstatus" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckstatus">`traefik/http/services/Service02/loadBalancer/healthCheck/status`</a> | `42` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/timeout` | `42s` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthChecktimeout" href="#opt-traefikhttpservicesService02loadBalancerhealthChecktimeout" title="#opt-traefikhttpservicesService02loadBalancerhealthChecktimeout">`traefik/http/services/Service02/loadBalancer/healthCheck/timeout`</a> | `42s` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/healthCheck/unhealthyInterval` | `42s` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerhealthCheckunhealthyInterval" href="#opt-traefikhttpservicesService02loadBalancerhealthCheckunhealthyInterval" title="#opt-traefikhttpservicesService02loadBalancerhealthCheckunhealthyInterval">`traefik/http/services/Service02/loadBalancer/healthCheck/unhealthyInterval`</a> | `42s` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/passHostHeader` | `true` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerpassHostHeader" href="#opt-traefikhttpservicesService02loadBalancerpassHostHeader" title="#opt-traefikhttpservicesService02loadBalancerpassHostHeader">`traefik/http/services/Service02/loadBalancer/passHostHeader`</a> | `true` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/responseForwarding/flushInterval` | `42s` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerresponseForwardingflushInterval" href="#opt-traefikhttpservicesService02loadBalancerresponseForwardingflushInterval" title="#opt-traefikhttpservicesService02loadBalancerresponseForwardingflushInterval">`traefik/http/services/Service02/loadBalancer/responseForwarding/flushInterval`</a> | `42s` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/servers/0/preservePath` | `true` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerservers0preservePath" href="#opt-traefikhttpservicesService02loadBalancerservers0preservePath" title="#opt-traefikhttpservicesService02loadBalancerservers0preservePath">`traefik/http/services/Service02/loadBalancer/servers/0/preservePath`</a> | `true` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/servers/0/url` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerservers0url" href="#opt-traefikhttpservicesService02loadBalancerservers0url" title="#opt-traefikhttpservicesService02loadBalancerservers0url">`traefik/http/services/Service02/loadBalancer/servers/0/url`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/servers/0/weight` | `42` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerservers0weight" href="#opt-traefikhttpservicesService02loadBalancerservers0weight" title="#opt-traefikhttpservicesService02loadBalancerservers0weight">`traefik/http/services/Service02/loadBalancer/servers/0/weight`</a> | `42` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/servers/1/preservePath` | `true` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerservers1preservePath" href="#opt-traefikhttpservicesService02loadBalancerservers1preservePath" title="#opt-traefikhttpservicesService02loadBalancerservers1preservePath">`traefik/http/services/Service02/loadBalancer/servers/1/preservePath`</a> | `true` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/servers/1/url` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerservers1url" href="#opt-traefikhttpservicesService02loadBalancerservers1url" title="#opt-traefikhttpservicesService02loadBalancerservers1url">`traefik/http/services/Service02/loadBalancer/servers/1/url`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/servers/1/weight` | `42` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerservers1weight" href="#opt-traefikhttpservicesService02loadBalancerservers1weight" title="#opt-traefikhttpservicesService02loadBalancerservers1weight">`traefik/http/services/Service02/loadBalancer/servers/1/weight`</a> | `42` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/serversTransport` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerserversTransport" href="#opt-traefikhttpservicesService02loadBalancerserversTransport" title="#opt-traefikhttpservicesService02loadBalancerserversTransport">`traefik/http/services/Service02/loadBalancer/serversTransport`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/domain` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerstickycookiedomain" href="#opt-traefikhttpservicesService02loadBalancerstickycookiedomain" title="#opt-traefikhttpservicesService02loadBalancerstickycookiedomain">`traefik/http/services/Service02/loadBalancer/sticky/cookie/domain`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/httpOnly` | `true` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerstickycookiehttpOnly" href="#opt-traefikhttpservicesService02loadBalancerstickycookiehttpOnly" title="#opt-traefikhttpservicesService02loadBalancerstickycookiehttpOnly">`traefik/http/services/Service02/loadBalancer/sticky/cookie/httpOnly`</a> | `true` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/maxAge` | `42` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerstickycookiemaxAge" href="#opt-traefikhttpservicesService02loadBalancerstickycookiemaxAge" title="#opt-traefikhttpservicesService02loadBalancerstickycookiemaxAge">`traefik/http/services/Service02/loadBalancer/sticky/cookie/maxAge`</a> | `42` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/name` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerstickycookiename" href="#opt-traefikhttpservicesService02loadBalancerstickycookiename" title="#opt-traefikhttpservicesService02loadBalancerstickycookiename">`traefik/http/services/Service02/loadBalancer/sticky/cookie/name`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/path` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerstickycookiepath" href="#opt-traefikhttpservicesService02loadBalancerstickycookiepath" title="#opt-traefikhttpservicesService02loadBalancerstickycookiepath">`traefik/http/services/Service02/loadBalancer/sticky/cookie/path`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/sameSite` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerstickycookiesameSite" href="#opt-traefikhttpservicesService02loadBalancerstickycookiesameSite" title="#opt-traefikhttpservicesService02loadBalancerstickycookiesameSite">`traefik/http/services/Service02/loadBalancer/sticky/cookie/sameSite`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/sticky/cookie/secure` | `true` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerstickycookiesecure" href="#opt-traefikhttpservicesService02loadBalancerstickycookiesecure" title="#opt-traefikhttpservicesService02loadBalancerstickycookiesecure">`traefik/http/services/Service02/loadBalancer/sticky/cookie/secure`</a> | `true` |
|
||||||
| `traefik/http/services/Service02/loadBalancer/strategy` | `foobar` |
|
| <a id="opt-traefikhttpservicesService02loadBalancerstrategy" href="#opt-traefikhttpservicesService02loadBalancerstrategy" title="#opt-traefikhttpservicesService02loadBalancerstrategy">`traefik/http/services/Service02/loadBalancer/strategy`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service03/mirroring/healthCheck` | `` |
|
| <a id="opt-traefikhttpservicesService03mirroringhealthCheck" href="#opt-traefikhttpservicesService03mirroringhealthCheck" title="#opt-traefikhttpservicesService03mirroringhealthCheck">`traefik/http/services/Service03/mirroring/healthCheck`</a> | `` |
|
||||||
| `traefik/http/services/Service03/mirroring/maxBodySize` | `42` |
|
| <a id="opt-traefikhttpservicesService03mirroringmaxBodySize" href="#opt-traefikhttpservicesService03mirroringmaxBodySize" title="#opt-traefikhttpservicesService03mirroringmaxBodySize">`traefik/http/services/Service03/mirroring/maxBodySize`</a> | `42` |
|
||||||
| `traefik/http/services/Service03/mirroring/mirrorBody` | `true` |
|
| <a id="opt-traefikhttpservicesService03mirroringmirrorBody" href="#opt-traefikhttpservicesService03mirroringmirrorBody" title="#opt-traefikhttpservicesService03mirroringmirrorBody">`traefik/http/services/Service03/mirroring/mirrorBody`</a> | `true` |
|
||||||
| `traefik/http/services/Service03/mirroring/mirrors/0/name` | `foobar` |
|
| <a id="opt-traefikhttpservicesService03mirroringmirrors0name" href="#opt-traefikhttpservicesService03mirroringmirrors0name" title="#opt-traefikhttpservicesService03mirroringmirrors0name">`traefik/http/services/Service03/mirroring/mirrors/0/name`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service03/mirroring/mirrors/0/percent` | `42` |
|
| <a id="opt-traefikhttpservicesService03mirroringmirrors0percent" href="#opt-traefikhttpservicesService03mirroringmirrors0percent" title="#opt-traefikhttpservicesService03mirroringmirrors0percent">`traefik/http/services/Service03/mirroring/mirrors/0/percent`</a> | `42` |
|
||||||
| `traefik/http/services/Service03/mirroring/mirrors/1/name` | `foobar` |
|
| <a id="opt-traefikhttpservicesService03mirroringmirrors1name" href="#opt-traefikhttpservicesService03mirroringmirrors1name" title="#opt-traefikhttpservicesService03mirroringmirrors1name">`traefik/http/services/Service03/mirroring/mirrors/1/name`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service03/mirroring/mirrors/1/percent` | `42` |
|
| <a id="opt-traefikhttpservicesService03mirroringmirrors1percent" href="#opt-traefikhttpservicesService03mirroringmirrors1percent" title="#opt-traefikhttpservicesService03mirroringmirrors1percent">`traefik/http/services/Service03/mirroring/mirrors/1/percent`</a> | `42` |
|
||||||
| `traefik/http/services/Service03/mirroring/service` | `foobar` |
|
| <a id="opt-traefikhttpservicesService03mirroringservice" href="#opt-traefikhttpservicesService03mirroringservice" title="#opt-traefikhttpservicesService03mirroringservice">`traefik/http/services/Service03/mirroring/service`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service04/weighted/healthCheck` | `` |
|
| <a id="opt-traefikhttpservicesService04weightedhealthCheck" href="#opt-traefikhttpservicesService04weightedhealthCheck" title="#opt-traefikhttpservicesService04weightedhealthCheck">`traefik/http/services/Service04/weighted/healthCheck`</a> | `` |
|
||||||
| `traefik/http/services/Service04/weighted/services/0/name` | `foobar` |
|
| <a id="opt-traefikhttpservicesService04weightedservices0name" href="#opt-traefikhttpservicesService04weightedservices0name" title="#opt-traefikhttpservicesService04weightedservices0name">`traefik/http/services/Service04/weighted/services/0/name`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service04/weighted/services/0/weight` | `42` |
|
| <a id="opt-traefikhttpservicesService04weightedservices0weight" href="#opt-traefikhttpservicesService04weightedservices0weight" title="#opt-traefikhttpservicesService04weightedservices0weight">`traefik/http/services/Service04/weighted/services/0/weight`</a> | `42` |
|
||||||
| `traefik/http/services/Service04/weighted/services/1/name` | `foobar` |
|
| <a id="opt-traefikhttpservicesService04weightedservices1name" href="#opt-traefikhttpservicesService04weightedservices1name" title="#opt-traefikhttpservicesService04weightedservices1name">`traefik/http/services/Service04/weighted/services/1/name`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service04/weighted/services/1/weight` | `42` |
|
| <a id="opt-traefikhttpservicesService04weightedservices1weight" href="#opt-traefikhttpservicesService04weightedservices1weight" title="#opt-traefikhttpservicesService04weightedservices1weight">`traefik/http/services/Service04/weighted/services/1/weight`</a> | `42` |
|
||||||
| `traefik/http/services/Service04/weighted/sticky/cookie/domain` | `foobar` |
|
| <a id="opt-traefikhttpservicesService04weightedstickycookiedomain" href="#opt-traefikhttpservicesService04weightedstickycookiedomain" title="#opt-traefikhttpservicesService04weightedstickycookiedomain">`traefik/http/services/Service04/weighted/sticky/cookie/domain`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service04/weighted/sticky/cookie/httpOnly` | `true` |
|
| <a id="opt-traefikhttpservicesService04weightedstickycookiehttpOnly" href="#opt-traefikhttpservicesService04weightedstickycookiehttpOnly" title="#opt-traefikhttpservicesService04weightedstickycookiehttpOnly">`traefik/http/services/Service04/weighted/sticky/cookie/httpOnly`</a> | `true` |
|
||||||
| `traefik/http/services/Service04/weighted/sticky/cookie/maxAge` | `42` |
|
| <a id="opt-traefikhttpservicesService04weightedstickycookiemaxAge" href="#opt-traefikhttpservicesService04weightedstickycookiemaxAge" title="#opt-traefikhttpservicesService04weightedstickycookiemaxAge">`traefik/http/services/Service04/weighted/sticky/cookie/maxAge`</a> | `42` |
|
||||||
| `traefik/http/services/Service04/weighted/sticky/cookie/name` | `foobar` |
|
| <a id="opt-traefikhttpservicesService04weightedstickycookiename" href="#opt-traefikhttpservicesService04weightedstickycookiename" title="#opt-traefikhttpservicesService04weightedstickycookiename">`traefik/http/services/Service04/weighted/sticky/cookie/name`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service04/weighted/sticky/cookie/path` | `foobar` |
|
| <a id="opt-traefikhttpservicesService04weightedstickycookiepath" href="#opt-traefikhttpservicesService04weightedstickycookiepath" title="#opt-traefikhttpservicesService04weightedstickycookiepath">`traefik/http/services/Service04/weighted/sticky/cookie/path`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service04/weighted/sticky/cookie/sameSite` | `foobar` |
|
| <a id="opt-traefikhttpservicesService04weightedstickycookiesameSite" href="#opt-traefikhttpservicesService04weightedstickycookiesameSite" title="#opt-traefikhttpservicesService04weightedstickycookiesameSite">`traefik/http/services/Service04/weighted/sticky/cookie/sameSite`</a> | `foobar` |
|
||||||
| `traefik/http/services/Service04/weighted/sticky/cookie/secure` | `true` |
|
| <a id="opt-traefikhttpservicesService04weightedstickycookiesecure" href="#opt-traefikhttpservicesService04weightedstickycookiesecure" title="#opt-traefikhttpservicesService04weightedstickycookiesecure">`traefik/http/services/Service04/weighted/sticky/cookie/secure`</a> | `true` |
|
||||||
| `traefik/tcp/middlewares/TCPMiddleware01/ipAllowList/sourceRange/0` | `foobar` |
|
| <a id="opt-traefiktcpmiddlewaresTCPMiddleware01ipAllowListsourceRange0" href="#opt-traefiktcpmiddlewaresTCPMiddleware01ipAllowListsourceRange0" title="#opt-traefiktcpmiddlewaresTCPMiddleware01ipAllowListsourceRange0">`traefik/tcp/middlewares/TCPMiddleware01/ipAllowList/sourceRange/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/middlewares/TCPMiddleware01/ipAllowList/sourceRange/1` | `foobar` |
|
| <a id="opt-traefiktcpmiddlewaresTCPMiddleware01ipAllowListsourceRange1" href="#opt-traefiktcpmiddlewaresTCPMiddleware01ipAllowListsourceRange1" title="#opt-traefiktcpmiddlewaresTCPMiddleware01ipAllowListsourceRange1">`traefik/tcp/middlewares/TCPMiddleware01/ipAllowList/sourceRange/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/middlewares/TCPMiddleware02/ipWhiteList/sourceRange/0` | `foobar` |
|
| <a id="opt-traefiktcpmiddlewaresTCPMiddleware02ipWhiteListsourceRange0" href="#opt-traefiktcpmiddlewaresTCPMiddleware02ipWhiteListsourceRange0" title="#opt-traefiktcpmiddlewaresTCPMiddleware02ipWhiteListsourceRange0">`traefik/tcp/middlewares/TCPMiddleware02/ipWhiteList/sourceRange/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/middlewares/TCPMiddleware02/ipWhiteList/sourceRange/1` | `foobar` |
|
| <a id="opt-traefiktcpmiddlewaresTCPMiddleware02ipWhiteListsourceRange1" href="#opt-traefiktcpmiddlewaresTCPMiddleware02ipWhiteListsourceRange1" title="#opt-traefiktcpmiddlewaresTCPMiddleware02ipWhiteListsourceRange1">`traefik/tcp/middlewares/TCPMiddleware02/ipWhiteList/sourceRange/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/middlewares/TCPMiddleware03/inFlightConn/amount` | `42` |
|
| <a id="opt-traefiktcpmiddlewaresTCPMiddleware03inFlightConnamount" href="#opt-traefiktcpmiddlewaresTCPMiddleware03inFlightConnamount" title="#opt-traefiktcpmiddlewaresTCPMiddleware03inFlightConnamount">`traefik/tcp/middlewares/TCPMiddleware03/inFlightConn/amount`</a> | `42` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/entryPoints/0` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0entryPoints0" href="#opt-traefiktcproutersTCPRouter0entryPoints0" title="#opt-traefiktcproutersTCPRouter0entryPoints0">`traefik/tcp/routers/TCPRouter0/entryPoints/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/entryPoints/1` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0entryPoints1" href="#opt-traefiktcproutersTCPRouter0entryPoints1" title="#opt-traefiktcproutersTCPRouter0entryPoints1">`traefik/tcp/routers/TCPRouter0/entryPoints/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/middlewares/0` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0middlewares0" href="#opt-traefiktcproutersTCPRouter0middlewares0" title="#opt-traefiktcproutersTCPRouter0middlewares0">`traefik/tcp/routers/TCPRouter0/middlewares/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/middlewares/1` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0middlewares1" href="#opt-traefiktcproutersTCPRouter0middlewares1" title="#opt-traefiktcproutersTCPRouter0middlewares1">`traefik/tcp/routers/TCPRouter0/middlewares/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/priority` | `42` |
|
| <a id="opt-traefiktcproutersTCPRouter0priority" href="#opt-traefiktcproutersTCPRouter0priority" title="#opt-traefiktcproutersTCPRouter0priority">`traefik/tcp/routers/TCPRouter0/priority`</a> | `42` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/rule` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0rule" href="#opt-traefiktcproutersTCPRouter0rule" title="#opt-traefiktcproutersTCPRouter0rule">`traefik/tcp/routers/TCPRouter0/rule`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/ruleSyntax` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0ruleSyntax" href="#opt-traefiktcproutersTCPRouter0ruleSyntax" title="#opt-traefiktcproutersTCPRouter0ruleSyntax">`traefik/tcp/routers/TCPRouter0/ruleSyntax`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/service` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0service" href="#opt-traefiktcproutersTCPRouter0service" title="#opt-traefiktcproutersTCPRouter0service">`traefik/tcp/routers/TCPRouter0/service`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/tls/certResolver` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0tlscertResolver" href="#opt-traefiktcproutersTCPRouter0tlscertResolver" title="#opt-traefiktcproutersTCPRouter0tlscertResolver">`traefik/tcp/routers/TCPRouter0/tls/certResolver`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/tls/domains/0/main` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0tlsdomains0main" href="#opt-traefiktcproutersTCPRouter0tlsdomains0main" title="#opt-traefiktcproutersTCPRouter0tlsdomains0main">`traefik/tcp/routers/TCPRouter0/tls/domains/0/main`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/tls/domains/0/sans/0` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0tlsdomains0sans0" href="#opt-traefiktcproutersTCPRouter0tlsdomains0sans0" title="#opt-traefiktcproutersTCPRouter0tlsdomains0sans0">`traefik/tcp/routers/TCPRouter0/tls/domains/0/sans/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/tls/domains/0/sans/1` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0tlsdomains0sans1" href="#opt-traefiktcproutersTCPRouter0tlsdomains0sans1" title="#opt-traefiktcproutersTCPRouter0tlsdomains0sans1">`traefik/tcp/routers/TCPRouter0/tls/domains/0/sans/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/tls/domains/1/main` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0tlsdomains1main" href="#opt-traefiktcproutersTCPRouter0tlsdomains1main" title="#opt-traefiktcproutersTCPRouter0tlsdomains1main">`traefik/tcp/routers/TCPRouter0/tls/domains/1/main`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/tls/domains/1/sans/0` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0tlsdomains1sans0" href="#opt-traefiktcproutersTCPRouter0tlsdomains1sans0" title="#opt-traefiktcproutersTCPRouter0tlsdomains1sans0">`traefik/tcp/routers/TCPRouter0/tls/domains/1/sans/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/tls/domains/1/sans/1` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0tlsdomains1sans1" href="#opt-traefiktcproutersTCPRouter0tlsdomains1sans1" title="#opt-traefiktcproutersTCPRouter0tlsdomains1sans1">`traefik/tcp/routers/TCPRouter0/tls/domains/1/sans/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/tls/options` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter0tlsoptions" href="#opt-traefiktcproutersTCPRouter0tlsoptions" title="#opt-traefiktcproutersTCPRouter0tlsoptions">`traefik/tcp/routers/TCPRouter0/tls/options`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter0/tls/passthrough` | `true` |
|
| <a id="opt-traefiktcproutersTCPRouter0tlspassthrough" href="#opt-traefiktcproutersTCPRouter0tlspassthrough" title="#opt-traefiktcproutersTCPRouter0tlspassthrough">`traefik/tcp/routers/TCPRouter0/tls/passthrough`</a> | `true` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/entryPoints/0` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1entryPoints0" href="#opt-traefiktcproutersTCPRouter1entryPoints0" title="#opt-traefiktcproutersTCPRouter1entryPoints0">`traefik/tcp/routers/TCPRouter1/entryPoints/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/entryPoints/1` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1entryPoints1" href="#opt-traefiktcproutersTCPRouter1entryPoints1" title="#opt-traefiktcproutersTCPRouter1entryPoints1">`traefik/tcp/routers/TCPRouter1/entryPoints/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/middlewares/0` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1middlewares0" href="#opt-traefiktcproutersTCPRouter1middlewares0" title="#opt-traefiktcproutersTCPRouter1middlewares0">`traefik/tcp/routers/TCPRouter1/middlewares/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/middlewares/1` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1middlewares1" href="#opt-traefiktcproutersTCPRouter1middlewares1" title="#opt-traefiktcproutersTCPRouter1middlewares1">`traefik/tcp/routers/TCPRouter1/middlewares/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/priority` | `42` |
|
| <a id="opt-traefiktcproutersTCPRouter1priority" href="#opt-traefiktcproutersTCPRouter1priority" title="#opt-traefiktcproutersTCPRouter1priority">`traefik/tcp/routers/TCPRouter1/priority`</a> | `42` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/rule` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1rule" href="#opt-traefiktcproutersTCPRouter1rule" title="#opt-traefiktcproutersTCPRouter1rule">`traefik/tcp/routers/TCPRouter1/rule`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/ruleSyntax` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1ruleSyntax" href="#opt-traefiktcproutersTCPRouter1ruleSyntax" title="#opt-traefiktcproutersTCPRouter1ruleSyntax">`traefik/tcp/routers/TCPRouter1/ruleSyntax`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/service` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1service" href="#opt-traefiktcproutersTCPRouter1service" title="#opt-traefiktcproutersTCPRouter1service">`traefik/tcp/routers/TCPRouter1/service`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/tls/certResolver` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1tlscertResolver" href="#opt-traefiktcproutersTCPRouter1tlscertResolver" title="#opt-traefiktcproutersTCPRouter1tlscertResolver">`traefik/tcp/routers/TCPRouter1/tls/certResolver`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/tls/domains/0/main` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1tlsdomains0main" href="#opt-traefiktcproutersTCPRouter1tlsdomains0main" title="#opt-traefiktcproutersTCPRouter1tlsdomains0main">`traefik/tcp/routers/TCPRouter1/tls/domains/0/main`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/tls/domains/0/sans/0` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1tlsdomains0sans0" href="#opt-traefiktcproutersTCPRouter1tlsdomains0sans0" title="#opt-traefiktcproutersTCPRouter1tlsdomains0sans0">`traefik/tcp/routers/TCPRouter1/tls/domains/0/sans/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/tls/domains/0/sans/1` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1tlsdomains0sans1" href="#opt-traefiktcproutersTCPRouter1tlsdomains0sans1" title="#opt-traefiktcproutersTCPRouter1tlsdomains0sans1">`traefik/tcp/routers/TCPRouter1/tls/domains/0/sans/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/tls/domains/1/main` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1tlsdomains1main" href="#opt-traefiktcproutersTCPRouter1tlsdomains1main" title="#opt-traefiktcproutersTCPRouter1tlsdomains1main">`traefik/tcp/routers/TCPRouter1/tls/domains/1/main`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/tls/domains/1/sans/0` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1tlsdomains1sans0" href="#opt-traefiktcproutersTCPRouter1tlsdomains1sans0" title="#opt-traefiktcproutersTCPRouter1tlsdomains1sans0">`traefik/tcp/routers/TCPRouter1/tls/domains/1/sans/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/tls/domains/1/sans/1` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1tlsdomains1sans1" href="#opt-traefiktcproutersTCPRouter1tlsdomains1sans1" title="#opt-traefiktcproutersTCPRouter1tlsdomains1sans1">`traefik/tcp/routers/TCPRouter1/tls/domains/1/sans/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/tls/options` | `foobar` |
|
| <a id="opt-traefiktcproutersTCPRouter1tlsoptions" href="#opt-traefiktcproutersTCPRouter1tlsoptions" title="#opt-traefiktcproutersTCPRouter1tlsoptions">`traefik/tcp/routers/TCPRouter1/tls/options`</a> | `foobar` |
|
||||||
| `traefik/tcp/routers/TCPRouter1/tls/passthrough` | `true` |
|
| <a id="opt-traefiktcproutersTCPRouter1tlspassthrough" href="#opt-traefiktcproutersTCPRouter1tlspassthrough" title="#opt-traefiktcproutersTCPRouter1tlspassthrough">`traefik/tcp/routers/TCPRouter1/tls/passthrough`</a> | `true` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/dialKeepAlive` | `42s` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0dialKeepAlive" href="#opt-traefiktcpserversTransportsTCPServersTransport0dialKeepAlive" title="#opt-traefiktcpserversTransportsTCPServersTransport0dialKeepAlive">`traefik/tcp/serversTransports/TCPServersTransport0/dialKeepAlive`</a> | `42s` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/dialTimeout` | `42s` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0dialTimeout" href="#opt-traefiktcpserversTransportsTCPServersTransport0dialTimeout" title="#opt-traefiktcpserversTransportsTCPServersTransport0dialTimeout">`traefik/tcp/serversTransports/TCPServersTransport0/dialTimeout`</a> | `42s` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/terminationDelay` | `42s` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0proxyProtocolversion" href="#opt-traefiktcpserversTransportsTCPServersTransport0proxyProtocolversion" title="#opt-traefiktcpserversTransportsTCPServersTransport0proxyProtocolversion">`traefik/tcp/serversTransports/TCPServersTransport0/proxyProtocol/version`</a> | `42` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/certificates/0/certFile` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0terminationDelay" href="#opt-traefiktcpserversTransportsTCPServersTransport0terminationDelay" title="#opt-traefiktcpserversTransportsTCPServersTransport0terminationDelay">`traefik/tcp/serversTransports/TCPServersTransport0/terminationDelay`</a> | `42s` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/certificates/0/keyFile` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates0certFile" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates0certFile" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates0certFile">`traefik/tcp/serversTransports/TCPServersTransport0/tls/certificates/0/certFile`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/certificates/1/certFile` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates0keyFile" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates0keyFile" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates0keyFile">`traefik/tcp/serversTransports/TCPServersTransport0/tls/certificates/0/keyFile`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/certificates/1/keyFile` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates1certFile" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates1certFile" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates1certFile">`traefik/tcp/serversTransports/TCPServersTransport0/tls/certificates/1/certFile`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/insecureSkipVerify` | `true` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates1keyFile" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates1keyFile" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlscertificates1keyFile">`traefik/tcp/serversTransports/TCPServersTransport0/tls/certificates/1/keyFile`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/peerCertURI` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlsinsecureSkipVerify" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlsinsecureSkipVerify" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlsinsecureSkipVerify">`traefik/tcp/serversTransports/TCPServersTransport0/tls/insecureSkipVerify`</a> | `true` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/rootCAs/0` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlspeerCertURI" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlspeerCertURI" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlspeerCertURI">`traefik/tcp/serversTransports/TCPServersTransport0/tls/peerCertURI`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/rootCAs/1` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlsrootCAs0" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlsrootCAs0" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlsrootCAs0">`traefik/tcp/serversTransports/TCPServersTransport0/tls/rootCAs/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/serverName` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlsrootCAs1" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlsrootCAs1" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlsrootCAs1">`traefik/tcp/serversTransports/TCPServersTransport0/tls/rootCAs/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/spiffe/ids/0` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlsserverName" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlsserverName" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlsserverName">`traefik/tcp/serversTransports/TCPServersTransport0/tls/serverName`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/spiffe/ids/1` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlsspiffeids0" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlsspiffeids0" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlsspiffeids0">`traefik/tcp/serversTransports/TCPServersTransport0/tls/spiffe/ids/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport0/tls/spiffe/trustDomain` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlsspiffeids1" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlsspiffeids1" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlsspiffeids1">`traefik/tcp/serversTransports/TCPServersTransport0/tls/spiffe/ids/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/dialKeepAlive` | `42s` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport0tlsspiffetrustDomain" href="#opt-traefiktcpserversTransportsTCPServersTransport0tlsspiffetrustDomain" title="#opt-traefiktcpserversTransportsTCPServersTransport0tlsspiffetrustDomain">`traefik/tcp/serversTransports/TCPServersTransport0/tls/spiffe/trustDomain`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/dialTimeout` | `42s` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1dialKeepAlive" href="#opt-traefiktcpserversTransportsTCPServersTransport1dialKeepAlive" title="#opt-traefiktcpserversTransportsTCPServersTransport1dialKeepAlive">`traefik/tcp/serversTransports/TCPServersTransport1/dialKeepAlive`</a> | `42s` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/terminationDelay` | `42s` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1dialTimeout" href="#opt-traefiktcpserversTransportsTCPServersTransport1dialTimeout" title="#opt-traefiktcpserversTransportsTCPServersTransport1dialTimeout">`traefik/tcp/serversTransports/TCPServersTransport1/dialTimeout`</a> | `42s` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/certificates/0/certFile` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1proxyProtocolversion" href="#opt-traefiktcpserversTransportsTCPServersTransport1proxyProtocolversion" title="#opt-traefiktcpserversTransportsTCPServersTransport1proxyProtocolversion">`traefik/tcp/serversTransports/TCPServersTransport1/proxyProtocol/version`</a> | `42` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/certificates/0/keyFile` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1terminationDelay" href="#opt-traefiktcpserversTransportsTCPServersTransport1terminationDelay" title="#opt-traefiktcpserversTransportsTCPServersTransport1terminationDelay">`traefik/tcp/serversTransports/TCPServersTransport1/terminationDelay`</a> | `42s` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/certificates/1/certFile` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates0certFile" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates0certFile" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates0certFile">`traefik/tcp/serversTransports/TCPServersTransport1/tls/certificates/0/certFile`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/certificates/1/keyFile` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates0keyFile" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates0keyFile" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates0keyFile">`traefik/tcp/serversTransports/TCPServersTransport1/tls/certificates/0/keyFile`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/insecureSkipVerify` | `true` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates1certFile" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates1certFile" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates1certFile">`traefik/tcp/serversTransports/TCPServersTransport1/tls/certificates/1/certFile`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/peerCertURI` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates1keyFile" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates1keyFile" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlscertificates1keyFile">`traefik/tcp/serversTransports/TCPServersTransport1/tls/certificates/1/keyFile`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/rootCAs/0` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlsinsecureSkipVerify" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlsinsecureSkipVerify" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlsinsecureSkipVerify">`traefik/tcp/serversTransports/TCPServersTransport1/tls/insecureSkipVerify`</a> | `true` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/rootCAs/1` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlspeerCertURI" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlspeerCertURI" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlspeerCertURI">`traefik/tcp/serversTransports/TCPServersTransport1/tls/peerCertURI`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/serverName` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlsrootCAs0" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlsrootCAs0" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlsrootCAs0">`traefik/tcp/serversTransports/TCPServersTransport1/tls/rootCAs/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/spiffe/ids/0` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlsrootCAs1" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlsrootCAs1" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlsrootCAs1">`traefik/tcp/serversTransports/TCPServersTransport1/tls/rootCAs/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/spiffe/ids/1` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlsserverName" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlsserverName" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlsserverName">`traefik/tcp/serversTransports/TCPServersTransport1/tls/serverName`</a> | `foobar` |
|
||||||
| `traefik/tcp/serversTransports/TCPServersTransport1/tls/spiffe/trustDomain` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlsspiffeids0" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlsspiffeids0" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlsspiffeids0">`traefik/tcp/serversTransports/TCPServersTransport1/tls/spiffe/ids/0`</a> | `foobar` |
|
||||||
| `traefik/tcp/services/TCPService01/loadBalancer/proxyProtocol/version` | `42` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlsspiffeids1" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlsspiffeids1" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlsspiffeids1">`traefik/tcp/serversTransports/TCPServersTransport1/tls/spiffe/ids/1`</a> | `foobar` |
|
||||||
| `traefik/tcp/services/TCPService01/loadBalancer/servers/0/address` | `foobar` |
|
| <a id="opt-traefiktcpserversTransportsTCPServersTransport1tlsspiffetrustDomain" href="#opt-traefiktcpserversTransportsTCPServersTransport1tlsspiffetrustDomain" title="#opt-traefiktcpserversTransportsTCPServersTransport1tlsspiffetrustDomain">`traefik/tcp/serversTransports/TCPServersTransport1/tls/spiffe/trustDomain`</a> | `foobar` |
|
||||||
| `traefik/tcp/services/TCPService01/loadBalancer/servers/0/tls` | `true` |
|
| <a id="opt-traefiktcpservicesTCPService01loadBalancerproxyProtocolversion" href="#opt-traefiktcpservicesTCPService01loadBalancerproxyProtocolversion" title="#opt-traefiktcpservicesTCPService01loadBalancerproxyProtocolversion">`traefik/tcp/services/TCPService01/loadBalancer/proxyProtocol/version`</a> | `42` |
|
||||||
| `traefik/tcp/services/TCPService01/loadBalancer/servers/1/address` | `foobar` |
|
| <a id="opt-traefiktcpservicesTCPService01loadBalancerservers0address" href="#opt-traefiktcpservicesTCPService01loadBalancerservers0address" title="#opt-traefiktcpservicesTCPService01loadBalancerservers0address">`traefik/tcp/services/TCPService01/loadBalancer/servers/0/address`</a> | `foobar` |
|
||||||
| `traefik/tcp/services/TCPService01/loadBalancer/servers/1/tls` | `true` |
|
| <a id="opt-traefiktcpservicesTCPService01loadBalancerservers0tls" href="#opt-traefiktcpservicesTCPService01loadBalancerservers0tls" title="#opt-traefiktcpservicesTCPService01loadBalancerservers0tls">`traefik/tcp/services/TCPService01/loadBalancer/servers/0/tls`</a> | `true` |
|
||||||
| `traefik/tcp/services/TCPService01/loadBalancer/serversTransport` | `foobar` |
|
| <a id="opt-traefiktcpservicesTCPService01loadBalancerservers1address" href="#opt-traefiktcpservicesTCPService01loadBalancerservers1address" title="#opt-traefiktcpservicesTCPService01loadBalancerservers1address">`traefik/tcp/services/TCPService01/loadBalancer/servers/1/address`</a> | `foobar` |
|
||||||
| `traefik/tcp/services/TCPService01/loadBalancer/terminationDelay` | `42` |
|
| <a id="opt-traefiktcpservicesTCPService01loadBalancerservers1tls" href="#opt-traefiktcpservicesTCPService01loadBalancerservers1tls" title="#opt-traefiktcpservicesTCPService01loadBalancerservers1tls">`traefik/tcp/services/TCPService01/loadBalancer/servers/1/tls`</a> | `true` |
|
||||||
| `traefik/tcp/services/TCPService02/weighted/services/0/name` | `foobar` |
|
| <a id="opt-traefiktcpservicesTCPService01loadBalancerserversTransport" href="#opt-traefiktcpservicesTCPService01loadBalancerserversTransport" title="#opt-traefiktcpservicesTCPService01loadBalancerserversTransport">`traefik/tcp/services/TCPService01/loadBalancer/serversTransport`</a> | `foobar` |
|
||||||
| `traefik/tcp/services/TCPService02/weighted/services/0/weight` | `42` |
|
| <a id="opt-traefiktcpservicesTCPService01loadBalancerterminationDelay" href="#opt-traefiktcpservicesTCPService01loadBalancerterminationDelay" title="#opt-traefiktcpservicesTCPService01loadBalancerterminationDelay">`traefik/tcp/services/TCPService01/loadBalancer/terminationDelay`</a> | `42` |
|
||||||
| `traefik/tcp/services/TCPService02/weighted/services/1/name` | `foobar` |
|
| <a id="opt-traefiktcpservicesTCPService02weightedservices0name" href="#opt-traefiktcpservicesTCPService02weightedservices0name" title="#opt-traefiktcpservicesTCPService02weightedservices0name">`traefik/tcp/services/TCPService02/weighted/services/0/name`</a> | `foobar` |
|
||||||
| `traefik/tcp/services/TCPService02/weighted/services/1/weight` | `42` |
|
| <a id="opt-traefiktcpservicesTCPService02weightedservices0weight" href="#opt-traefiktcpservicesTCPService02weightedservices0weight" title="#opt-traefiktcpservicesTCPService02weightedservices0weight">`traefik/tcp/services/TCPService02/weighted/services/0/weight`</a> | `42` |
|
||||||
| `traefik/tls/certificates/0/certFile` | `foobar` |
|
| <a id="opt-traefiktcpservicesTCPService02weightedservices1name" href="#opt-traefiktcpservicesTCPService02weightedservices1name" title="#opt-traefiktcpservicesTCPService02weightedservices1name">`traefik/tcp/services/TCPService02/weighted/services/1/name`</a> | `foobar` |
|
||||||
| `traefik/tls/certificates/0/keyFile` | `foobar` |
|
| <a id="opt-traefiktcpservicesTCPService02weightedservices1weight" href="#opt-traefiktcpservicesTCPService02weightedservices1weight" title="#opt-traefiktcpservicesTCPService02weightedservices1weight">`traefik/tcp/services/TCPService02/weighted/services/1/weight`</a> | `42` |
|
||||||
| `traefik/tls/certificates/0/stores/0` | `foobar` |
|
| <a id="opt-traefiktlscertificates0certFile" href="#opt-traefiktlscertificates0certFile" title="#opt-traefiktlscertificates0certFile">`traefik/tls/certificates/0/certFile`</a> | `foobar` |
|
||||||
| `traefik/tls/certificates/0/stores/1` | `foobar` |
|
| <a id="opt-traefiktlscertificates0keyFile" href="#opt-traefiktlscertificates0keyFile" title="#opt-traefiktlscertificates0keyFile">`traefik/tls/certificates/0/keyFile`</a> | `foobar` |
|
||||||
| `traefik/tls/certificates/1/certFile` | `foobar` |
|
| <a id="opt-traefiktlscertificates0stores0" href="#opt-traefiktlscertificates0stores0" title="#opt-traefiktlscertificates0stores0">`traefik/tls/certificates/0/stores/0`</a> | `foobar` |
|
||||||
| `traefik/tls/certificates/1/keyFile` | `foobar` |
|
| <a id="opt-traefiktlscertificates0stores1" href="#opt-traefiktlscertificates0stores1" title="#opt-traefiktlscertificates0stores1">`traefik/tls/certificates/0/stores/1`</a> | `foobar` |
|
||||||
| `traefik/tls/certificates/1/stores/0` | `foobar` |
|
| <a id="opt-traefiktlscertificates1certFile" href="#opt-traefiktlscertificates1certFile" title="#opt-traefiktlscertificates1certFile">`traefik/tls/certificates/1/certFile`</a> | `foobar` |
|
||||||
| `traefik/tls/certificates/1/stores/1` | `foobar` |
|
| <a id="opt-traefiktlscertificates1keyFile" href="#opt-traefiktlscertificates1keyFile" title="#opt-traefiktlscertificates1keyFile">`traefik/tls/certificates/1/keyFile`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/alpnProtocols/0` | `foobar` |
|
| <a id="opt-traefiktlscertificates1stores0" href="#opt-traefiktlscertificates1stores0" title="#opt-traefiktlscertificates1stores0">`traefik/tls/certificates/1/stores/0`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/alpnProtocols/1` | `foobar` |
|
| <a id="opt-traefiktlscertificates1stores1" href="#opt-traefiktlscertificates1stores1" title="#opt-traefiktlscertificates1stores1">`traefik/tls/certificates/1/stores/1`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/cipherSuites/0` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0alpnProtocols0" href="#opt-traefiktlsoptionsOptions0alpnProtocols0" title="#opt-traefiktlsoptionsOptions0alpnProtocols0">`traefik/tls/options/Options0/alpnProtocols/0`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/cipherSuites/1` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0alpnProtocols1" href="#opt-traefiktlsoptionsOptions0alpnProtocols1" title="#opt-traefiktlsoptionsOptions0alpnProtocols1">`traefik/tls/options/Options0/alpnProtocols/1`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/clientAuth/caFiles/0` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0cipherSuites0" href="#opt-traefiktlsoptionsOptions0cipherSuites0" title="#opt-traefiktlsoptionsOptions0cipherSuites0">`traefik/tls/options/Options0/cipherSuites/0`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/clientAuth/caFiles/1` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0cipherSuites1" href="#opt-traefiktlsoptionsOptions0cipherSuites1" title="#opt-traefiktlsoptionsOptions0cipherSuites1">`traefik/tls/options/Options0/cipherSuites/1`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/clientAuth/clientAuthType` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0clientAuthcaFiles0" href="#opt-traefiktlsoptionsOptions0clientAuthcaFiles0" title="#opt-traefiktlsoptionsOptions0clientAuthcaFiles0">`traefik/tls/options/Options0/clientAuth/caFiles/0`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/curvePreferences/0` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0clientAuthcaFiles1" href="#opt-traefiktlsoptionsOptions0clientAuthcaFiles1" title="#opt-traefiktlsoptionsOptions0clientAuthcaFiles1">`traefik/tls/options/Options0/clientAuth/caFiles/1`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/curvePreferences/1` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0clientAuthclientAuthType" href="#opt-traefiktlsoptionsOptions0clientAuthclientAuthType" title="#opt-traefiktlsoptionsOptions0clientAuthclientAuthType">`traefik/tls/options/Options0/clientAuth/clientAuthType`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/disableSessionTickets` | `true` |
|
| <a id="opt-traefiktlsoptionsOptions0curvePreferences0" href="#opt-traefiktlsoptionsOptions0curvePreferences0" title="#opt-traefiktlsoptionsOptions0curvePreferences0">`traefik/tls/options/Options0/curvePreferences/0`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/maxVersion` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0curvePreferences1" href="#opt-traefiktlsoptionsOptions0curvePreferences1" title="#opt-traefiktlsoptionsOptions0curvePreferences1">`traefik/tls/options/Options0/curvePreferences/1`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/minVersion` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0disableSessionTickets" href="#opt-traefiktlsoptionsOptions0disableSessionTickets" title="#opt-traefiktlsoptionsOptions0disableSessionTickets">`traefik/tls/options/Options0/disableSessionTickets`</a> | `true` |
|
||||||
| `traefik/tls/options/Options0/preferServerCipherSuites` | `true` |
|
| <a id="opt-traefiktlsoptionsOptions0maxVersion" href="#opt-traefiktlsoptionsOptions0maxVersion" title="#opt-traefiktlsoptionsOptions0maxVersion">`traefik/tls/options/Options0/maxVersion`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options0/sniStrict` | `true` |
|
| <a id="opt-traefiktlsoptionsOptions0minVersion" href="#opt-traefiktlsoptionsOptions0minVersion" title="#opt-traefiktlsoptionsOptions0minVersion">`traefik/tls/options/Options0/minVersion`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/alpnProtocols/0` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0preferServerCipherSuites" href="#opt-traefiktlsoptionsOptions0preferServerCipherSuites" title="#opt-traefiktlsoptionsOptions0preferServerCipherSuites">`traefik/tls/options/Options0/preferServerCipherSuites`</a> | `true` |
|
||||||
| `traefik/tls/options/Options1/alpnProtocols/1` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions0sniStrict" href="#opt-traefiktlsoptionsOptions0sniStrict" title="#opt-traefiktlsoptionsOptions0sniStrict">`traefik/tls/options/Options0/sniStrict`</a> | `true` |
|
||||||
| `traefik/tls/options/Options1/cipherSuites/0` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1alpnProtocols0" href="#opt-traefiktlsoptionsOptions1alpnProtocols0" title="#opt-traefiktlsoptionsOptions1alpnProtocols0">`traefik/tls/options/Options1/alpnProtocols/0`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/cipherSuites/1` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1alpnProtocols1" href="#opt-traefiktlsoptionsOptions1alpnProtocols1" title="#opt-traefiktlsoptionsOptions1alpnProtocols1">`traefik/tls/options/Options1/alpnProtocols/1`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/clientAuth/caFiles/0` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1cipherSuites0" href="#opt-traefiktlsoptionsOptions1cipherSuites0" title="#opt-traefiktlsoptionsOptions1cipherSuites0">`traefik/tls/options/Options1/cipherSuites/0`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/clientAuth/caFiles/1` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1cipherSuites1" href="#opt-traefiktlsoptionsOptions1cipherSuites1" title="#opt-traefiktlsoptionsOptions1cipherSuites1">`traefik/tls/options/Options1/cipherSuites/1`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/clientAuth/clientAuthType` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1clientAuthcaFiles0" href="#opt-traefiktlsoptionsOptions1clientAuthcaFiles0" title="#opt-traefiktlsoptionsOptions1clientAuthcaFiles0">`traefik/tls/options/Options1/clientAuth/caFiles/0`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/curvePreferences/0` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1clientAuthcaFiles1" href="#opt-traefiktlsoptionsOptions1clientAuthcaFiles1" title="#opt-traefiktlsoptionsOptions1clientAuthcaFiles1">`traefik/tls/options/Options1/clientAuth/caFiles/1`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/curvePreferences/1` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1clientAuthclientAuthType" href="#opt-traefiktlsoptionsOptions1clientAuthclientAuthType" title="#opt-traefiktlsoptionsOptions1clientAuthclientAuthType">`traefik/tls/options/Options1/clientAuth/clientAuthType`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/disableSessionTickets` | `true` |
|
| <a id="opt-traefiktlsoptionsOptions1curvePreferences0" href="#opt-traefiktlsoptionsOptions1curvePreferences0" title="#opt-traefiktlsoptionsOptions1curvePreferences0">`traefik/tls/options/Options1/curvePreferences/0`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/maxVersion` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1curvePreferences1" href="#opt-traefiktlsoptionsOptions1curvePreferences1" title="#opt-traefiktlsoptionsOptions1curvePreferences1">`traefik/tls/options/Options1/curvePreferences/1`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/minVersion` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1disableSessionTickets" href="#opt-traefiktlsoptionsOptions1disableSessionTickets" title="#opt-traefiktlsoptionsOptions1disableSessionTickets">`traefik/tls/options/Options1/disableSessionTickets`</a> | `true` |
|
||||||
| `traefik/tls/options/Options1/preferServerCipherSuites` | `true` |
|
| <a id="opt-traefiktlsoptionsOptions1maxVersion" href="#opt-traefiktlsoptionsOptions1maxVersion" title="#opt-traefiktlsoptionsOptions1maxVersion">`traefik/tls/options/Options1/maxVersion`</a> | `foobar` |
|
||||||
| `traefik/tls/options/Options1/sniStrict` | `true` |
|
| <a id="opt-traefiktlsoptionsOptions1minVersion" href="#opt-traefiktlsoptionsOptions1minVersion" title="#opt-traefiktlsoptionsOptions1minVersion">`traefik/tls/options/Options1/minVersion`</a> | `foobar` |
|
||||||
| `traefik/tls/stores/Store0/defaultCertificate/certFile` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1preferServerCipherSuites" href="#opt-traefiktlsoptionsOptions1preferServerCipherSuites" title="#opt-traefiktlsoptionsOptions1preferServerCipherSuites">`traefik/tls/options/Options1/preferServerCipherSuites`</a> | `true` |
|
||||||
| `traefik/tls/stores/Store0/defaultCertificate/keyFile` | `foobar` |
|
| <a id="opt-traefiktlsoptionsOptions1sniStrict" href="#opt-traefiktlsoptionsOptions1sniStrict" title="#opt-traefiktlsoptionsOptions1sniStrict">`traefik/tls/options/Options1/sniStrict`</a> | `true` |
|
||||||
| `traefik/tls/stores/Store0/defaultGeneratedCert/domain/main` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore0defaultCertificatecertFile" href="#opt-traefiktlsstoresStore0defaultCertificatecertFile" title="#opt-traefiktlsstoresStore0defaultCertificatecertFile">`traefik/tls/stores/Store0/defaultCertificate/certFile`</a> | `foobar` |
|
||||||
| `traefik/tls/stores/Store0/defaultGeneratedCert/domain/sans/0` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore0defaultCertificatekeyFile" href="#opt-traefiktlsstoresStore0defaultCertificatekeyFile" title="#opt-traefiktlsstoresStore0defaultCertificatekeyFile">`traefik/tls/stores/Store0/defaultCertificate/keyFile`</a> | `foobar` |
|
||||||
| `traefik/tls/stores/Store0/defaultGeneratedCert/domain/sans/1` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore0defaultGeneratedCertdomainmain" href="#opt-traefiktlsstoresStore0defaultGeneratedCertdomainmain" title="#opt-traefiktlsstoresStore0defaultGeneratedCertdomainmain">`traefik/tls/stores/Store0/defaultGeneratedCert/domain/main`</a> | `foobar` |
|
||||||
| `traefik/tls/stores/Store0/defaultGeneratedCert/resolver` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore0defaultGeneratedCertdomainsans0" href="#opt-traefiktlsstoresStore0defaultGeneratedCertdomainsans0" title="#opt-traefiktlsstoresStore0defaultGeneratedCertdomainsans0">`traefik/tls/stores/Store0/defaultGeneratedCert/domain/sans/0`</a> | `foobar` |
|
||||||
| `traefik/tls/stores/Store1/defaultCertificate/certFile` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore0defaultGeneratedCertdomainsans1" href="#opt-traefiktlsstoresStore0defaultGeneratedCertdomainsans1" title="#opt-traefiktlsstoresStore0defaultGeneratedCertdomainsans1">`traefik/tls/stores/Store0/defaultGeneratedCert/domain/sans/1`</a> | `foobar` |
|
||||||
| `traefik/tls/stores/Store1/defaultCertificate/keyFile` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore0defaultGeneratedCertresolver" href="#opt-traefiktlsstoresStore0defaultGeneratedCertresolver" title="#opt-traefiktlsstoresStore0defaultGeneratedCertresolver">`traefik/tls/stores/Store0/defaultGeneratedCert/resolver`</a> | `foobar` |
|
||||||
| `traefik/tls/stores/Store1/defaultGeneratedCert/domain/main` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore1defaultCertificatecertFile" href="#opt-traefiktlsstoresStore1defaultCertificatecertFile" title="#opt-traefiktlsstoresStore1defaultCertificatecertFile">`traefik/tls/stores/Store1/defaultCertificate/certFile`</a> | `foobar` |
|
||||||
| `traefik/tls/stores/Store1/defaultGeneratedCert/domain/sans/0` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore1defaultCertificatekeyFile" href="#opt-traefiktlsstoresStore1defaultCertificatekeyFile" title="#opt-traefiktlsstoresStore1defaultCertificatekeyFile">`traefik/tls/stores/Store1/defaultCertificate/keyFile`</a> | `foobar` |
|
||||||
| `traefik/tls/stores/Store1/defaultGeneratedCert/domain/sans/1` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore1defaultGeneratedCertdomainmain" href="#opt-traefiktlsstoresStore1defaultGeneratedCertdomainmain" title="#opt-traefiktlsstoresStore1defaultGeneratedCertdomainmain">`traefik/tls/stores/Store1/defaultGeneratedCert/domain/main`</a> | `foobar` |
|
||||||
| `traefik/tls/stores/Store1/defaultGeneratedCert/resolver` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore1defaultGeneratedCertdomainsans0" href="#opt-traefiktlsstoresStore1defaultGeneratedCertdomainsans0" title="#opt-traefiktlsstoresStore1defaultGeneratedCertdomainsans0">`traefik/tls/stores/Store1/defaultGeneratedCert/domain/sans/0`</a> | `foobar` |
|
||||||
| `traefik/udp/routers/UDPRouter0/entryPoints/0` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore1defaultGeneratedCertdomainsans1" href="#opt-traefiktlsstoresStore1defaultGeneratedCertdomainsans1" title="#opt-traefiktlsstoresStore1defaultGeneratedCertdomainsans1">`traefik/tls/stores/Store1/defaultGeneratedCert/domain/sans/1`</a> | `foobar` |
|
||||||
| `traefik/udp/routers/UDPRouter0/entryPoints/1` | `foobar` |
|
| <a id="opt-traefiktlsstoresStore1defaultGeneratedCertresolver" href="#opt-traefiktlsstoresStore1defaultGeneratedCertresolver" title="#opt-traefiktlsstoresStore1defaultGeneratedCertresolver">`traefik/tls/stores/Store1/defaultGeneratedCert/resolver`</a> | `foobar` |
|
||||||
| `traefik/udp/routers/UDPRouter0/service` | `foobar` |
|
| <a id="opt-traefikudproutersUDPRouter0entryPoints0" href="#opt-traefikudproutersUDPRouter0entryPoints0" title="#opt-traefikudproutersUDPRouter0entryPoints0">`traefik/udp/routers/UDPRouter0/entryPoints/0`</a> | `foobar` |
|
||||||
| `traefik/udp/routers/UDPRouter1/entryPoints/0` | `foobar` |
|
| <a id="opt-traefikudproutersUDPRouter0entryPoints1" href="#opt-traefikudproutersUDPRouter0entryPoints1" title="#opt-traefikudproutersUDPRouter0entryPoints1">`traefik/udp/routers/UDPRouter0/entryPoints/1`</a> | `foobar` |
|
||||||
| `traefik/udp/routers/UDPRouter1/entryPoints/1` | `foobar` |
|
| <a id="opt-traefikudproutersUDPRouter0service" href="#opt-traefikudproutersUDPRouter0service" title="#opt-traefikudproutersUDPRouter0service">`traefik/udp/routers/UDPRouter0/service`</a> | `foobar` |
|
||||||
| `traefik/udp/routers/UDPRouter1/service` | `foobar` |
|
| <a id="opt-traefikudproutersUDPRouter1entryPoints0" href="#opt-traefikudproutersUDPRouter1entryPoints0" title="#opt-traefikudproutersUDPRouter1entryPoints0">`traefik/udp/routers/UDPRouter1/entryPoints/0`</a> | `foobar` |
|
||||||
| `traefik/udp/services/UDPService01/loadBalancer/servers/0/address` | `foobar` |
|
| <a id="opt-traefikudproutersUDPRouter1entryPoints1" href="#opt-traefikudproutersUDPRouter1entryPoints1" title="#opt-traefikudproutersUDPRouter1entryPoints1">`traefik/udp/routers/UDPRouter1/entryPoints/1`</a> | `foobar` |
|
||||||
| `traefik/udp/services/UDPService01/loadBalancer/servers/1/address` | `foobar` |
|
| <a id="opt-traefikudproutersUDPRouter1service" href="#opt-traefikudproutersUDPRouter1service" title="#opt-traefikudproutersUDPRouter1service">`traefik/udp/routers/UDPRouter1/service`</a> | `foobar` |
|
||||||
| `traefik/udp/services/UDPService02/weighted/services/0/name` | `foobar` |
|
| <a id="opt-traefikudpservicesUDPService01loadBalancerservers0address" href="#opt-traefikudpservicesUDPService01loadBalancerservers0address" title="#opt-traefikudpservicesUDPService01loadBalancerservers0address">`traefik/udp/services/UDPService01/loadBalancer/servers/0/address`</a> | `foobar` |
|
||||||
| `traefik/udp/services/UDPService02/weighted/services/0/weight` | `42` |
|
| <a id="opt-traefikudpservicesUDPService01loadBalancerservers1address" href="#opt-traefikudpservicesUDPService01loadBalancerservers1address" title="#opt-traefikudpservicesUDPService01loadBalancerservers1address">`traefik/udp/services/UDPService01/loadBalancer/servers/1/address`</a> | `foobar` |
|
||||||
| `traefik/udp/services/UDPService02/weighted/services/1/name` | `foobar` |
|
| <a id="opt-traefikudpservicesUDPService02weightedservices0name" href="#opt-traefikudpservicesUDPService02weightedservices0name" title="#opt-traefikudpservicesUDPService02weightedservices0name">`traefik/udp/services/UDPService02/weighted/services/0/name`</a> | `foobar` |
|
||||||
| `traefik/udp/services/UDPService02/weighted/services/1/weight` | `42` |
|
| <a id="opt-traefikudpservicesUDPService02weightedservices0weight" href="#opt-traefikudpservicesUDPService02weightedservices0weight" title="#opt-traefikudpservicesUDPService02weightedservices0weight">`traefik/udp/services/UDPService02/weighted/services/0/weight`</a> | `42` |
|
||||||
|
| <a id="opt-traefikudpservicesUDPService02weightedservices1name" href="#opt-traefikudpservicesUDPService02weightedservices1name" title="#opt-traefikudpservicesUDPService02weightedservices1name">`traefik/udp/services/UDPService02/weighted/services/1/name`</a> | `foobar` |
|
||||||
|
| <a id="opt-traefikudpservicesUDPService02weightedservices1weight" href="#opt-traefikudpservicesUDPService02weightedservices1weight" title="#opt-traefikudpservicesUDPService02weightedservices1weight">`traefik/udp/services/UDPService02/weighted/services/1/weight`</a> | `42` |
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Traefik Dynamic Configuration with KV stores"
|
|
||||||
description: "Read the technical documentation to learn the Traefik Dynamic Configuration with KV stores."
|
|
||||||
---
|
|
||||||
|
|
||||||
# KV Configuration Reference
|
|
||||||
|
|
||||||
Dynamic configuration with KV stores.
|
|
||||||
{: .subtitle }
|
|
||||||
|
|
||||||
--8<-- "content/reference/dynamic-configuration/kv-ref.md"
|
|
||||||