Add HTTP3 support (experimental)
Co-authored-by: Ludovic Fernandez <ldez@users.noreply.github.com>
This commit is contained in:
parent
0509b6fdb9
commit
e5a01c7cc8
13 changed files with 298 additions and 20 deletions
|
@ -102,6 +102,9 @@ Entry points definition. (Default: ```false```)
|
|||
`--entrypoints.<name>.address`:
|
||||
Entry point address.
|
||||
|
||||
`--entrypoints.<name>.enablehttp3`:
|
||||
Enable HTTP3. (Default: ```false```)
|
||||
|
||||
`--entrypoints.<name>.forwardedheaders.insecure`:
|
||||
Trust all forwarded headers. (Default: ```false```)
|
||||
|
||||
|
@ -174,6 +177,9 @@ plugin's GOPATH.
|
|||
`--experimental.devplugin.modulename`:
|
||||
plugin's module name.
|
||||
|
||||
`--experimental.http3`:
|
||||
Enable HTTP3. (Default: ```false```)
|
||||
|
||||
`--experimental.kubernetesgateway`:
|
||||
Allow the Kubernetes gateway api provider usage. (Default: ```false```)
|
||||
|
||||
|
|
|
@ -102,6 +102,9 @@ Entry points definition. (Default: ```false```)
|
|||
`TRAEFIK_ENTRYPOINTS_<NAME>_ADDRESS`:
|
||||
Entry point address.
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_ENABLEHTTP3`:
|
||||
Enable HTTP3. (Default: ```false```)
|
||||
|
||||
`TRAEFIK_ENTRYPOINTS_<NAME>_FORWARDEDHEADERS_INSECURE`:
|
||||
Trust all forwarded headers. (Default: ```false```)
|
||||
|
||||
|
@ -174,6 +177,9 @@ plugin's GOPATH.
|
|||
`TRAEFIK_EXPERIMENTAL_DEVPLUGIN_MODULENAME`:
|
||||
plugin's module name.
|
||||
|
||||
`TRAEFIK_EXPERIMENTAL_HTTP3`:
|
||||
Enable HTTP3. (Default: ```false```)
|
||||
|
||||
`TRAEFIK_EXPERIMENTAL_KUBERNETESGATEWAY`:
|
||||
Allow the Kubernetes gateway api provider usage. (Default: ```false```)
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
[entryPoints]
|
||||
[entryPoints.EntryPoint0]
|
||||
address = "foobar"
|
||||
enableHTTP3 = true
|
||||
[entryPoints.EntryPoint0.transport]
|
||||
[entryPoints.EntryPoint0.transport.lifeCycle]
|
||||
requestAcceptGraceTimeout = 42
|
||||
|
@ -390,4 +391,5 @@
|
|||
[experimental.devPlugin]
|
||||
goPath = "foobar"
|
||||
moduleName = "foobar"
|
||||
http3 = true
|
||||
kubernetesGateway = true
|
||||
|
|
|
@ -32,6 +32,7 @@ entryPoints:
|
|||
trustedIPs:
|
||||
- foobar
|
||||
- foobar
|
||||
enableHTTP3: true
|
||||
http:
|
||||
redirections:
|
||||
entryPoint:
|
||||
|
@ -410,5 +411,6 @@ experimental:
|
|||
devPlugin:
|
||||
goPath: foobar
|
||||
moduleName: foobar
|
||||
http3: true
|
||||
kubernetesGateway: true
|
||||
|
||||
|
|
|
@ -100,6 +100,7 @@ They can be defined by using a file (TOML or YAML) or CLI arguments.
|
|||
[entryPoints]
|
||||
[entryPoints.name]
|
||||
address = ":8888" # same as ":8888/tcp"
|
||||
enableHTTP3 = true
|
||||
[entryPoints.name.transport]
|
||||
[entryPoints.name.transport.lifeCycle]
|
||||
requestAcceptGraceTimeout = 42
|
||||
|
@ -121,6 +122,7 @@ They can be defined by using a file (TOML or YAML) or CLI arguments.
|
|||
entryPoints:
|
||||
name:
|
||||
address: ":8888" # same as ":8888/tcp"
|
||||
enableHTTP3: true
|
||||
transport:
|
||||
lifeCycle:
|
||||
requestAcceptGraceTimeout: 42
|
||||
|
@ -144,6 +146,7 @@ They can be defined by using a file (TOML or YAML) or CLI arguments.
|
|||
```bash tab="CLI"
|
||||
## Static configuration
|
||||
--entryPoints.name.address=:8888 # same as :8888/tcp
|
||||
--entryPoints.name.http3=true
|
||||
--entryPoints.name.transport.lifeCycle.requestAcceptGraceTimeout=42
|
||||
--entryPoints.name.transport.lifeCycle.graceTimeOut=42
|
||||
--entryPoints.name.transport.respondingTimeouts.readTimeout=42
|
||||
|
@ -218,6 +221,43 @@ If both TCP and UDP are wanted for the same port, two entryPoints definitions ar
|
|||
|
||||
Full details for how to specify `address` can be found in [net.Listen](https://golang.org/pkg/net/#Listen) (and [net.Dial](https://golang.org/pkg/net/#Dial)) of the doc for go.
|
||||
|
||||
### EnableHTTP3
|
||||
|
||||
`enableHTTP3` defines that you want to enable HTTP3 on this `address`.
|
||||
You can only enable HTTP3 on a TCP entrypoint.
|
||||
Enabling HTTP3 will automatically add the correct headers for the connection upgrade to HTTP3.
|
||||
|
||||
??? info "HTTP3 uses UDP+TLS"
|
||||
|
||||
As HTTP3 uses UDP, you can't have a TCP entrypoint with HTTP3 on the same port as a UDP entrypoint.
|
||||
Since HTTP3 requires the use of TLS, only routers with TLS enabled will be usable with HTTP3.
|
||||
|
||||
!!! warning "Enabling Experimental HTTP3"
|
||||
|
||||
As the HTTP3 spec is still in draft, HTTP3 support in Traefik is an experimental feature and needs to be activated
|
||||
in the experimental section of the static configuration.
|
||||
|
||||
```toml tab="File (TOML)"
|
||||
[experimental]
|
||||
http3 = true
|
||||
|
||||
[entryPoints.name]
|
||||
enableHTTP3 = true
|
||||
```
|
||||
|
||||
```yaml tab="File (YAML)"
|
||||
experimental:
|
||||
http3: true
|
||||
|
||||
entryPoints:
|
||||
name:
|
||||
enableHTTP3: true
|
||||
```
|
||||
|
||||
```bash tab="CLI"
|
||||
--experimental.http3=true --entrypoints.name.enablehttp3=true
|
||||
```
|
||||
|
||||
### Forwarded Headers
|
||||
|
||||
You can configure Traefik to trust the forwarded headers information (`X-Forwarded-*`).
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue