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

Objectif : Permettre à Traefik d'écouter/répondre aux requêtes HTTP/3 (QUIC)

Environnement : Debian 11.7, Docker 23.x, docker compose (plugin) 2.17.x, Traefik 2.10.

Contexte d'exécution :

jho@vmi866042:/srv/docker/dc$ tree
.
├── conf
│   ├── acme.json
│   ├── traefik.yml
│   ├── traefikdynamic
│   │   ├── general.yml
│   │   ├── routersservices.yml
├── docker-compose.yml
└── logs
    ├── traefikAccess.log
    ├── traefik.log
Résultat de la commande "tree" dans le dossier /srv/docker/dc

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.

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

Check if HTTP/3 is enabled - Geekflare Tools
Find out if your site supports the latest H3 protocol for better performance. Geekflare H3 tool use cURL for the testing

Source

Partager l'article