Depuis la version 2.5 de Traefik, vous pouvez désormais mettre en place/utiliser le protocole HTTP/3 (QUIC). Retenez toutefois qu'il s'agit encore d'une version au stade expérimentale pour Traefik, que des instabilités sont à prévoir.


Version Date Commentaires
1 05/2022 Création de l'article
1.1 08/2023 Mise à jour des versions, mise à jour de l'URL de l'outil, ajout du résultat souhaité

Objectif : Permettre Ă  Traefik d'Ă©couter/rĂ©pondre aux requĂȘtes HTTP/3 (QUIC)

Environnement : Debian 12, Docker 24.x, docker compose (plugin) 2.20.x, Traefik 2.10.

Contexte d'exécution :

jho@vmi866042:/opt/docker/dc$ tree
.
├── conf
│   ├── acme.json
│   ├── traefik.yml
│   ├── traefikdynamic
│   │   ├── dynamic.yml
├── docker-compose.yml
└── logs
    ├── traefikAccess.log
    ├── traefik.log
RĂ©sultat de la commande "tree" dans le dossier /opt/docker/dc
  • dossier oĂč se trouvent tous les fichiers et dossiers pour cet exemple : /opt/docker/dc
  • emplacement du fichier de configuration principal de Traefik : /opt/docker/dc/conf/traefik.yml
  • dossier oĂč se trouvent les configurations de Traefik (fichiers dynamiques) : /opt/docker/dc/conf/traefikdynamic
  • emplacement du fichier comportant tous les certificats gĂ©nĂ©rĂ©s par let's encrypt (ou autre) : /opt/docker/dc/conf/acme.json
  • dossier oĂč se trouvent les journaux d'Ă©vĂ©nements (logs) : /opt/docker/dc/logs/

Principes et prérequis

HTTP/3 est un nouveau protocole standardisĂ© visant Ă  amĂ©liorer la vitesse de navigation sur le web. Sans rentrer dans de nombreux dĂ©tails, HTTP/3 est un protocole de transport pour distribuer des requĂȘtes HTTP plus rapidement qu'avec HTTP/2 (TCP), notamment en utilisant l'UDP.

http3 quic diagram
HTTP/3 QUIC - image récupérée depuis le blog CloudFlare

Pour plus d'informations, je vous suggĂšre ces sites :

Configuration de Traefik

Avant de vous lancer dans la configuration du HTTP/3, sachez qu'il n'est pas possible de faire Ă©couter Traefik sur un port UDP ayant le mĂȘme numĂ©ro de port qu'un port TCP. De plus, l'entrypoint utilisĂ© pour HTTP/3 doit ĂȘtre celui avec lequel vous avez activĂ© la partie TLS pour vos routeurs.

La configuration est assez simple dans l'ensemble : ajoutez le bloc "experimental" et modifier l'entrypoint servant le HTTPS :

experimental:
  http3: true

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
  websecure:
    address: ":443"
    http3:
      advertisedPort: "443"

Vous devez redémarrer Traefik pour valider les changements. Avec cette configuration, tous vos routeurs configurés avec l'entrypoint "websecure" (selon l'exemple) seront accessibles en HTTP/2 et HTTP/3.

Configuration du fichier docker-compose.yml

Vous devez faire Ă©couter Traefik sur le port 443/UDP pour qu'il puisse Ă©couter/distribuer en HTTP/3. Ainsi, modifiez le service dans le fichier docker-compose comme tel :

---
services:
  traefik:
    image: traefik:saintmarcelin
    container_name: traefik
    restart: unless-stopped
    ports:
      - target : 80
        published : 80
        protocol: tcp
        mode : host
      ### BEGIN dashboad
      - target : 8080
        published : 8080
        protocol: tcp
        mode : host
      ### END dashboard
      - target : 443
        published : 443
        protocol: tcp
        mode : host
      # HTTP/3 QUIC
      - target : 443
        published : 443
        protocol: udp
        mode : host
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./conf/traefikdynamic:/dynamic
      - ./conf/traefik.yml:/etc/traefik/traefik.yml:ro
      - ./conf/acme.json:/etc/traefik/acme.json
      - ./logs/traefik.log:/etc/traefik/applog.log
    environment:
      TZ: Europe/Paris

Pour tester, vous pouvez utiliser l'outil disponible chez Domsignal :

HTTP/3 Test | Ensure Your Website’s Speed and Compatibility
Find out if your site supports the latest H3 protocol for better performance. Domsignal H3 tool use cURL for the testing

Lorsque votre configuration fonctionne, vous devez avoir ce résultat :

Source

Partager l'article