Commit c9a9ee25 authored by tollive's avatar tollive
Browse files

use label instaed of file configuration

parent 0ddc891a
# WIP pas encore prêt pour la prod
## Redirections des erreurs
Ce dossier comprends la configuration pour lancer un serveur nginx minimal qui servira les pages d'erreurs trouvées par traefik. Il necessite seulement une configuration supplémentaire au niveau du fichier `traefik.toml`.
### Principe
Treafik possède un méchanisme intégré pour rediriger les pages d'erreurs relativement simple. Il consiste simplement à ajouter un [middleware](https://doc.traefik.io/traefik/middlewares/overview/) à la configuration générale.
Ce middlewar peut être ajouté de
facons :
- via le fichier de configuration `treafik_dynamic.toml`
- via des labels dans un docker-compose (par exemple celui qui sert les page d'erreurs)
#### fichier `traefik_dynamic.toml`
la configuration consiste à rajouter les lignes suivantes dans la section `http.middlewares` :
```toml
[http.middlewares]
[http.middlewares.error-pages.errors]
status = ["X00-X99"] # le range d'erreurs
service = "errorPages"
query = "/{status}.html" # permet de livrer la page correspondant au statut
```
et de rajouter le service **errorPages** http dans la section [http.service]
:warning: Il semble qu'il ne soit pas possible de faire référence à un service créé via des labels docker (à moins qu'on puisse faire errorPages@docker)
#### labels docker-compose
Dans cette configuration, on créer un conteneur avec les labels habituels auxquels on va rajouter le middleware suivant :
```bash
- "traefik.http.middlewares.test-errorpage.errors.status=X00-X99" # le range d'erreurs
- "traefik.http.middlewares.test-errorpage.errors.service=errorPages"
- "traefik.http.middlewares.test-errorpage.errors.query=/{status}.html"
```
### Configuration
Dans tous les cas, il faut ajouter le middleware créé dans le fichier `traefik.toml`
```toml
# pour la version fichier :
middlewares = ["hardening@file", "compression@file", "error-page@file"]
# pour la version label
middlewares = ["hardening@file", "compression@file", "error-page@docker"]
```
version: "3.7"
networks:
proxy:
external: true
services:
errorspages:
container_name: traefik-error
image: nginx_error
build: .
labels:
traefik.http.routers.errorspages.entrypoints: websecure
traefik.http.routers.errorspages.rule: Host(`errors.test.picasoft.net`)
traefik.http.services.errorspages.loadbalancer.server.port: 80
traefik.enable: true
traefik.http.middlewares.error-page.errors.status: "300-599"
traefik.http.middlewares.error-page.errors.service: errorspages
traefik.http.middlewares.error-page.errors.query: "/404.html"
networks:
- proxy
restart: unless-stopped
FROM nginx:alpine
COPY html /usr/share/nginx/html
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1> Oups, la page n'existe pas. Heureusement, terry prattchett existe ! </h1>
<p>
La lumière pense voyager plus vite que quoi que ce soit d'autre, mais c'est faux. Peu importe à quelle vitesse voyage la lumière, l'obscurité arrive toujours la première, et elle l'attend.
</p>
</body>
<html>
<head>
</head>
<body>
<p>
- Ce que j'aimerais être, mais alors vraiment, c'est un soc de charrue. Je ne sais pas en quoi ça consiste, mais ça me paraît une existence qui laisse une trace.
</p>
</body>
......@@ -11,7 +11,7 @@
[entryPoints.websecure]
address = ":443"
[entryPoints.websecure.http]
middlewares = ["hardening@file", "compression@file", "errorspages@file"]
middlewares = ["hardening@file", "compression@file", "error-page@docker"]
[entryPoints.websecure.http.tls]
certResolver = "letsencrypt"
options = "tls12@file"
......
......@@ -26,8 +26,3 @@
[http.middlewares.compression.compress]
excludedContentTypes = ["text/event-stream"]
[http.middlewares.errorspages.errors]
status = ["400-499"]
service = "rincewinderror"
query = "404.html"
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment