This article is available in French.
1. Le rôle des middlewares #
Entre le routeur et le service.
Principe #
Un routeur choisit le service selon la requête (hôte, chemin, en-têtes). Avant d'atteindre le service, la requête peut traverser des middlewares qui l'authentifient, la filtrent ou la transforment. Ils se déclarent une fois et se réutilisent sur plusieurs routeurs.
2. L'authentification #
BasicAuth pour un outil interne, ForwardAuth pour un vrai SSO.
BasicAuth avec Docker #
# Générer l'empreinte du mot de passe (les $ sont doublés dans un fichier Compose)
htpasswd -nbB admin 'MotDePasse-Solide' | sed -e 's/\$/\$\$/g'services:
whoami:
image: traefik/whoami
labels:
- traefik.http.routers.whoami.rule=Host(`whoami.exemple.fr`)
- traefik.http.routers.whoami.middlewares=auth@docker
- traefik.http.middlewares.auth.basicauth.users=admin:$$2y$$05$$…ForwardAuth : déléguer à un service d'authentification #
Avec ForwardAuth, Traefik envoie chaque requête à un service externe (Authelia, oauth2-proxy, Authentik). Une réponse 2xx autorise la requête, toute autre réponse est renvoyée au client (souvent une redirection vers la page de connexion).
http:
middlewares:
sso:
forwardAuth:
address: "http://authelia:9091/api/authz/forward-auth"
trustForwardHeader: true
authResponseHeaders: ["Remote-User", "Remote-Groups", "Remote-Email"]Erreur Courante : BasicAuth transmet le mot de passe à chaque requête : ne l'utilisez qu'en HTTPS, et préférez un SSO avec MFA pour les outils sensibles.
3. Les autres middlewares utiles #
Filtrer, protéger, transformer.
Sélection #
| Middleware | Rôle | Exemple |
|---|---|---|
headers | En-têtes de sécurité et CORS | stsSeconds: 31536000, contentTypeNosniff: true |
rateLimit | Limiter le débit par client | average: 100, burst: 50 |
ipAllowList | N'autoriser que certaines adresses | sourceRange: ["10.0.0.0/8"] |
redirectScheme | Rediriger HTTP vers HTTPS | scheme: https, permanent: true |
stripPrefix | Retirer un préfixe de chemin | /api → / |
retry, circuitBreaker | Résilience vers le backend | attempts: 3, expression: NetworkErrorRatio() > 0.3 |
compress | Compression gzip, brotli | réponses texte |
chain | Regrouper plusieurs middlewares | une chaîne « sécurité » réutilisable |
Une chaîne réutilisable #
http:
middlewares:
securite:
chain:
middlewares: [limite, entetes]
limite:
rateLimit: { average: 100, burst: 50 }
entetes:
headers:
stsSeconds: 31536000
stsIncludeSubdomains: true
contentTypeNosniff: true
frameDeny: true
referrerPolicy: strict-origin-when-cross-originMigration v2 → v3 : En Traefik v3,ipWhiteListest devenuipAllowList. Vérifiez les noms lors d'une migration depuis la v2.
My progress
Sign in to track your progress and take notes. Sign in
Recommended Articles
L'API de Traefik : inspecter la configuration et sécuriser le tableau de bord
Utiliser l'API REST de Traefik pour inspecter routeurs, services, middlewares et entrypoints, l'e...
Traefik : vue d'ensemble, architecture et premier déploiement
Découvrir Traefik : reverse proxy et load balancer cloud-native, entrypoints, routers, services, ...
Traefik comme Ingress Controller pour Kubernetes (Helm, IngressRoute, Gateway API)
Installer Traefik dans Kubernetes avec Helm et publier des applications avec Ingress, les CRD Ing...
Bonnes pratiques Traefik : sécurité, haute disponibilité et observabilité
Bonnes pratiques Traefik : sécurisation du dashboard et du socket Docker, TLS moderne, middleware...
Traefik : les providers (Docker, Kubernetes, Nomad, Consul, fichiers, clés-valeurs)
Les providers alimentent la configuration dynamique de Traefik : découverte des services Docker, ...
Les plugins Traefik : l'exemple de CrowdSec pour bloquer les attaques
Étendre Traefik avec des plugins (catalogue officiel, interpréteur Yaegi), puis protéger ses appl...
Traefik : les métriques avec Prometheus et OpenTelemetry
Exposer les métriques de Traefik (Prometheus ou OTLP), comprendre les séries par entrypoint, rout...
Traefik : les logs (journaux applicatifs et access logs)
Configurer les deux journaux de Traefik : le journal de fonctionnement (niveaux, format) et les a...
Traefik : le tracing distribué avec OpenTelemetry
Activer le tracing de Traefik v3 avec OpenTelemetry (OTLP), propager le contexte W3C vers les app...