Services web, HTTPS et reverse proxy Traefik
Comprendre une requête HTTP, publier un site avec Apache ou Nginx, le sécuriser en HTTPS, puis placer devant tous les services web un reverse proxy Traefik configuré en fichiers dynamiques.
L'essentiel
- HTTP : le client envoie une requête (méthode, chemin, en-tête Host), le serveur renvoie une réponse avec un code. Port 80 ; HTTPS = HTTP dans TLS, port 443.
- Codes : 2xx succès, 3xx redirection (301), 4xx erreur du client (403, 404), 5xx erreur du serveur (500, 502, 504).
- Apache et Nginx hébergent plusieurs sites grâce aux hôtes virtuels, choisis d'après le nom demandé.
- Toujours tester la syntaxe (
nginx -t) avant de recharger (systemctl reload). - TLS apporte confidentialité, intégrité et authentification du serveur par son certificat ; le nom doit figurer dans le SAN.
- Certificat : autosigné pour tester, autorité interne pour les noms
.lan, Let's Encrypt (ACME) pour un nom public. - Le reverse proxy est le point d'entrée unique : terminaison TLS, routage par nom, répartition, sécurité.
- Traefik : entryPoint → router → middlewares → service.
- File provider : un fichier YAML par service dans
dynamic/, rechargé à chaud ; jamais de labels Docker au labo. - Dépanner du client vers l'application : DNS, port 443, routeur Traefik, application en direct. Un 502 = application injoignable.
À retenir
Un code 4xx met en cause la requête (mauvaise adresse, droits) ; un code 5xx met en cause le serveur ou ce qu'il y a derrière. Derrière un reverse proxy, un 502 ou un 504 signifie presque toujours que l'application cible est arrêtée ou injoignable.
Piège classique
Les navigateurs ne regardent plus le champ CN : le nom doit figurer dans l'extension subjectAltName (SAN). Un certificat sans SAN, ou avec un autre nom que celui tapé dans la barre d'adresse, provoque l'alerte NET::ERR_CERT_COMMON_NAME_INVALID.
La règle d'or du file provider
Un service publié = un fichier dans dynamic/, qui contient son routeur, son service et ses middlewares. Pour retirer un service, on supprime son fichier : Traefik le retire aussitôt. Ces fichiers se versionnent dans Git, comme le reste de la configuration.
Commandes clés
| Pour… | Commandes |
|---|---|
| Activer un site Nginx | ln -s …/sites-available/site …/sites-enabled/ · nginx -t · systemctl reload nginx |
| Activer un site Apache | a2ensite site · apache2ctl configtest · systemctl reload apache2 |
| Certificat de test | openssl req -x509 -newkey rsa:2048 -nodes … -addext "subjectAltName=DNS:nom" |
| Publier avec Traefik | un fichier /etc/traefik/dynamic/service.yml : routers, services, middlewares, tls |
| Tester | curl -I http://nom (308) · curl -kI https://nom (200) |
| Ports et programmes | ss -tlnp |
| Journaux | journalctl -u traefik -f · /var/log/nginx/ · /var/log/apache2/ |