Utiliser un reverse proxy moderne afin d'assurer l'hébergement de plusieurs sites adressés par plusieurs sous domaines (chez OVH).
Jouer avec Docker Compose et passer au https (enfin!) avec Let's Encrypt.
Configuration du FrontEnd (Mise en place des rules) :https://docs.traefik.io/basics/#frontends
Exemple de quelques règles de routage :
- "traefik.frontend.rule=Host:floriantales.fr,floriantales.hd.free.fr" - "traefik.frontend.rule=Host:floriantales.fr,floriantales.hd.free.fr;PathPrefixStrip:/wiki" - "traefik.frontend.rule=PathPrefixStrip:/www" - "traefik.frontend.rule=Host:floriantales.hd.free.fr"
Difficile de se passer de compose lorsque l'on commence à jouer avec Traefik.
Exemple de yaml pour compose :
version: '2' services: ProxyReverse_Traefik: image: traefik:1.5 restart: always command: --web --docker --logLevel=DEBUG ports: - "8081:80" - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock" - "$PWD/traefik.toml:/traefik.toml" Nginx_WWW: image: richarvey/nginx-php-fpm restart: always labels: - "traefik.port=80" - "traefik.backend=Nginx_WWW" - "traefik.frontend.rule=PathPrefixStrip:/www" volumes: - "/mnt/Raid/Documents_de_Florian/Documents_NAS/Dockers/Docker_Data/Nginx_WWW/:/var/www/html" Nginx_Dokuwiki: image: richarvey/nginx-php-fpm restart: always environment: - PUID=1000 - PGID=1000 labels: - "traefik.port=80" - "traefik.backend=Nginx_Dokuwiki" - "traefik.frontend.rule=Host:doku.floriantales.fr" volumes: - "/mnt/Raid/Documents_de_Florian/Documents_NAS/Dockers/Docker_Data/Nginx_Dokuwiki/:/var/www/html"
Augmentation d'un cluster (nombre de backends pour traefik) Nginx_Dokuwiki :
Pour mettre en oeuvre des métriques on peut utiliser le paramétrage suivant (pour alimenter du Influxdb) :
[metrics] [metrics.influxdb] address = "Influxdb:8086" protocol = "http" pushinterval = "60s" database = "traefik_metrics" retentionpolicy = ""
L'adresse renseignée est un alias “dns” déclaré par un “links” dans la configuration docker compose :
version: '3.3' services: Influxdb: image: influxdb container_name: compose_influxdb [...] ProxyReverse_Traefik: image: traefik container_name: compose_traefik [...] links: - Influxdb [...]
Au bout de quelques temps de vie on se retrouve avec les mesures suivantes dans influxdb :
> use traefik_metrics Using database traefik_metrics> show measurements name: measurements name ---- traefik.backend.connections.open traefik.backend.request.duration traefik.backend.requests.total traefik.backend.server.up traefik.config.reload.lastSuccessTimestamp traefik.config.reload.total traefik.entrypoint.connections.open traefik.entrypoint.request.duration traefik.entrypoint.requests.total
Exemple avec les mesures traefik.backend.requests.total :
> select * from "traefik.backend.requests.total" name: traefik.backend.requests.total time backend code count method protocol ---- ------- ---- ----- ------ -------- 1562103501196457183 backend-compose-nginx-dokuwiki 200 19 GET http 1562103501196457183 backend-compose-nginx-dokuwiki 302 3 GET http 1562103501196457183 backend-compose-nginx-dokuwiki 304 3 GET http 1562103561196627361 backend-compose-nginx-dokuwiki 200 63 GET http 1562103561196627361 backend-compose-nginx-dokuwiki 302 3 GET http 1562103681196635183 backend-compose-nginx-dokuwiki 200 18 GET http 1562103681196635183 backend-compose-nginx-dokuwiki 302 8 GET http 1562103681196635183 backend-compose-nginx-dokuwiki 304 71 GET http 1562152339968503514 backend-compose-nginx-dokuwiki 200 4 GET http 1562152399968521229 backend-compose-nginx-webcv 200 1 GET http 1562152399968521229 backend-compose-nginx-webcv 404 1 GET http 1562152999968483889 backend-compose-nginx-dokuwiki 200 25 GET http 1562152999968483889 backend-compose-nginx-dokuwiki 200 4 POST http
J'ai publié mon dashboard sur grafana.com : https://grafana.com/dashboards/10479
Exemple de passage en https2: https://www.it-wars.com/posts/performance/docker-traefik-letsencrypt/
Point de départ : https://blog.osones.com/traefik-un-reverse-proxy-pour-vos-conteneurs.html
GitHub du Projet : https://github.com/containous/traefik