117 lines
3.1 KiB
Markdown
117 lines
3.1 KiB
Markdown
---
|
|
title: "Traefik Proxy Middleware Overview"
|
|
description: "There are several available middleware in Traefik Proxy used to modify requests or headers, take charge of redirections, add authentication, and so on."
|
|
---
|
|
|
|
# Middlewares
|
|
|
|
Tweaking the Request
|
|
{: .subtitle }
|
|
|
|
![Overview](../assets/img/middleware/overview.png)
|
|
|
|
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.
|
|
|
|
Middlewares that use the same protocol can be combined into chains to fit every scenario.
|
|
|
|
!!! warning "Provider Namespace"
|
|
|
|
Be aware of the concept of Providers Namespace described in the [Configuration Discovery](../providers/overview.md#provider-namespace) section.
|
|
It also applies to Middlewares.
|
|
|
|
## Configuration Example
|
|
|
|
```yaml tab="Docker"
|
|
# As a Docker Label
|
|
whoami:
|
|
# A container that exposes an API to show its IP address
|
|
image: traefik/whoami
|
|
labels:
|
|
# Create a middleware named `foo-add-prefix`
|
|
- "traefik.http.middlewares.foo-add-prefix.addprefix.prefix=/foo"
|
|
# Apply the middleware named `foo-add-prefix` to the router named `router1`
|
|
- "traefik.http.routers.router1.middlewares=foo-add-prefix@docker"
|
|
```
|
|
|
|
```yaml tab="Kubernetes IngressRoute"
|
|
---
|
|
apiVersion: traefik.containo.us/v1alpha1
|
|
kind: Middleware
|
|
metadata:
|
|
name: stripprefix
|
|
spec:
|
|
stripPrefix:
|
|
prefixes:
|
|
- /stripit
|
|
|
|
---
|
|
apiVersion: traefik.containo.us/v1alpha1
|
|
kind: IngressRoute
|
|
metadata:
|
|
name: ingressroute
|
|
spec:
|
|
# more fields...
|
|
routes:
|
|
# more fields...
|
|
middlewares:
|
|
- name: stripprefix
|
|
```
|
|
|
|
```yaml tab="Consul Catalog"
|
|
# Create a middleware named `foo-add-prefix`
|
|
- "traefik.http.middlewares.foo-add-prefix.addprefix.prefix=/foo"
|
|
# Apply the middleware named `foo-add-prefix` to the router named `router1`
|
|
- "traefik.http.routers.router1.middlewares=foo-add-prefix@consulcatalog"
|
|
```
|
|
|
|
```yaml tab="File (YAML)"
|
|
# As YAML Configuration File
|
|
http:
|
|
routers:
|
|
router1:
|
|
service: myService
|
|
middlewares:
|
|
- "foo-add-prefix"
|
|
rule: "Host(`example.com`)"
|
|
|
|
middlewares:
|
|
foo-add-prefix:
|
|
addPrefix:
|
|
prefix: "/foo"
|
|
|
|
services:
|
|
service1:
|
|
loadBalancer:
|
|
servers:
|
|
- url: "http://127.0.0.1:80"
|
|
```
|
|
|
|
```toml tab="File (TOML)"
|
|
# As TOML Configuration File
|
|
[http.routers]
|
|
[http.routers.router1]
|
|
service = "myService"
|
|
middlewares = ["foo-add-prefix"]
|
|
rule = "Host(`example.com`)"
|
|
|
|
[http.middlewares]
|
|
[http.middlewares.foo-add-prefix.addPrefix]
|
|
prefix = "/foo"
|
|
|
|
[http.services]
|
|
[http.services.service1]
|
|
[http.services.service1.loadBalancer]
|
|
|
|
[[http.services.service1.loadBalancer.servers]]
|
|
url = "http://127.0.0.1:80"
|
|
```
|
|
|
|
## Available Middlewares
|
|
|
|
A list of HTTP middlewares can be found [here](http/overview.md).
|
|
|
|
A list of TCP middlewares can be found [here](tcp/overview.md).
|
|
|
|
{!traefik-for-business-applications.md!}
|